Ga naar inhoud
  • 0

Repeterende velden


Jimjams

Vraag

Ik ben een opstartprocedure in Filemaker 5.0 (onder Windows NT 4.0) aan het uitwerken waarbij er aangelogd moet worden met een paswoord. Om in lijn te liggen met onze bedrijfsconvenant inzake paswoordbeveiligingen moet er een controle uitgevoerd worden op de vorige 4 paswoorden die de gebruiker heeft ingebracht.

Ik heb daarvoor 2 velden gecreëerd: Een global repeating field met 5 repetities en een global number field waarin de nummer van de repetitie wordt bewaard.

 

Voor de controle van de vorige paswoorden gebruik ik vervolgens de GetRepetition-functie met een eenvoudig loopje dat de vorige 4 inputs controleert. Wanneer uit deze controle geen conflicten volgen is het de bedoeling dat filemaker de eerstvolgende repititie in het repeating field overschrijft met het nieuw ingebrachte paswoord.

 

En daar loop ik vast! :cry:

Je kan in een script de nummer van de repititie enkel 'hardcoded' bepalen en niet via een variabele of zie ik dat verkeerd...

 

Als ik hier geen oplossing voor vind, zie ik mij verplicht om het global repeating field te vervangen door 5 gewone global text fields wat eigenlijk jammer zou zijn.

 

Iemand een idee?

Link naar reactie

18 antwoorden op deze vraag

Aanbevolen berichten

  • 0

Ik denk dat je problematiek een betere oplossing heeft, maar als je het toch met repeating fields wilt doen denk ik aan het volgende:

 

-zorg ervoor dat alle repetitions in de tabvolgorde op mekaar volgen

-maak een nieuw global numeriek veld aan "Repetition counter"

 

Maak de volgende tussenstap in je script:

 

-set field "Repetition counter": "0"

-goto field "paswoord"

-loop

-exit loop if (Repetition counter = Count(paswoord))

-go to next field

-set field "Repetition counter": Repetition counter+1

-end loop

 

Op dit moment bevind je je in de eerste lege repititie op voorwaarde dat er geen lege gaten zijn.

 

Helpt dit?

 

groeten,

Stef

Link naar reactie
  • 0

hallo,

Maak de volgende tussenstap in je script:

 

-set field "Repetition counter": "0"

-goto field "paswoord"

-loop

-exit loop if (Repetition counter = Count(paswoord))

-go to next field

-set field "Repetition counter": Repetition counter+1

-end loop

 

 

 

dit stukje script kan je best laten lopen op een afzonderlijke layout met hierop het herhalend veld, anders springt hij uit het veld.

Dus eerst naar een layout springen met alleen dat herhalend veld op en erna terug naar de originele layout.

 

Greets,

 

Eric

Link naar reactie
  • 0

Bedankt voor de reactie, heren.

 

Ik wil echter niet naar een andere layout switchen en dus zal ik uittesten of jou procedure werkt zonder dat het bewuste veld op de layout beschikbaar is, Stef.

 

Zelf heb ik ook een oplossing gevonden door in mijn script obv van het repititienummer alle mogelijkheden te voorzien. Dit kan omdat het maar om 5 repitities gaat. Voor elk repititienummer definiëer ik 'hardcoded' welke repetitie moet opgevuld worden.

 

PS.: Stef, jij sprak aanvankelijk over een betere methode? Welke?

Link naar reactie
  • 0

Zo pak ik het ook aan!

 

Een beetje uitleg:

 

Ik gebruik meestal een simpel tekstveld "paswoord_log" om zulke zaken te loggen, deze bevatten antricronologisch de historiek.

 

Bij het invoeren van een nieuw paswoord gebruik ik het volgende script:

 

set field "paswoord_log" :

paswoord & If(IsEmpty(paswoord_log);""; "¶tot " & DateToText(Status( CurrentDate)) & ": "& paswoord_log)

 

je krijgt dan bv. de inhoud:

 

jimjams

tot 1/08/2002: piet

tot 3/08/2002: stef

tot 7/08/2002: sarah

 

om dit veld te beperken tot een aantal lijnen (een tekstveld kan tot max. 64000 tekens bevatten) wordt deze stap gevolgd door:

 

set field "paswoordlog" :

If(

PatternCount( paswoord_log; "¶" )>4;

Left(

paswoord_log;

Position(paswoord_log; "¶" ; 1 ; 5 )-1)

;

paswoord_log)

 

in dit geval zal het log maximum 5 lijnen bevatten. Door het getal "4" en "5" in dit voorbeeld te verhogen kan je het aantal lijnen doen toenemen.

 

Om het huidige paswoord uit het log te filteren gebruik ik de volgende formule:

Left(paswoord_log;Position( paswoord_log; "¶" ; 1 ; 1)-1)

 

Deze oplossing vereist geen repetitions, neemt weinig ruimte in beslag en is eens gemaakt stabiel.

 

groeten,

Stef

Link naar reactie
  • 0
Ik zou een tekstveld maken waarin alle wachtwoorden zitten, gescheiden met een , dan kan je wachtwoorden controleren met patterncount (), en met het tellen van het aantal -tekens weet je waar je zit. Dan kan je met een veld en een script alles controleren.

 

Een patterncount kan in dit geval ZEER gevaarlijk zijn. Stel je voor dat het ene paswoord "jan" is en een vorig "jantje". Dan valt het gehele systeem in duigen. Als je op deze manier wilt werken, gebruik dan separators (bv pipes "|") om de waarden te scheiden > |jan| en doe een patterncount op die waarden.

 

mvg,

Stef

Link naar reactie

Doe mee aan dit gesprek

Je kunt dit nu plaatsen en later registreren. Indien je reeds een account hebt, log dan nu in om het bericht te plaatsen met je account.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...