Ga naar inhoud
  • 0

Repeterende velden


Jimjams

Vraag

Geplaatst:

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?

18 antwoorden op deze vraag

Aanbevolen berichten

  • 0
Geplaatst:

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

  • 0
Geplaatst:

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

  • 0
Geplaatst:

Als er in het script de stap "goto field "paswoord" is hoeft dit toch niet?! Alleen is het belangrijk dat de tabvolgorde netjes door alle repetities gaat.

 

groeten,

Stef

  • 0
Geplaatst:

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?

  • 0
Geplaatst:

En eigenlijk kan het nog simpeler:

 

-GEEN extra veld "repetition counter" en het volgende script:

 

-goto field "paswoord"

-loop

-exit loop if (Status( CurrentRepetitionNumber)=Count(a)+1))

-go to next field

-end loop

 

mvg,

Stef

  • 0
Geplaatst:

Mooi gevonden, maar hoe breng je bij het aanloggen Filemaker dan aan het verstand welke van de 5 paswoorden het huidige en enige actieve is?

Zonder repetition counter blijft er toch geen enkele registratie over?

  • 0
Geplaatst:

Akkoord, maar vanaf het zesde nieuwe paswoord wordt repititie 1 overschreven met het nieuwe paswoord en zijn dus alle repitities altijd opgevuld.

 

Of mis ik iets... :?:

  • 0
Geplaatst:

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.

  • 0
Geplaatst:

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

  • 0
Geplaatst:
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

  • 0
Geplaatst:

Bedankt iedereen die gereageerd heeft!

 

Ik durf mezelf redelijk ervaren in Filemaker noemen maar ik heb toch weer een aantal nieuwe dingen geleerd.

 

Dat pattern count-systeem ga ik zeker uitproberen!

 

 

Thanks!

:D

  • 0
Geplaatst:

Klopt, Stef!

 

Mijn vriendin en ik hebben dat kroegje een aantal jaren uitgebaat.

(zijn in november vorig jaar gestopt. Het café is overgenomen en heet nu "de scalp")

 

 

Johan.

  • 0
Geplaatst:

En vindt ge FM zoveel toffer dan een goei pint tappen? Ik denk er juist soms aan van een café open te doen, met name "In the Work-around" of "Den DeFine Fields"! :lol:

  • 0
Geplaatst:

Ik zal niet beweren dat Fm toffer is dan een goei pint tappen maar het grote voordeel van FM is dat als er een vervelend record in je database zit, je het simpelweg kan deleten. In de café blijf je er mee zitten... :wink:

  • 0
Geplaatst:

En een goede relatie maken is ook al simpeler in FM! En niemand zaagt dat ge er een stuk of 10 hebt.

 

loop

set field "stef"; 1 Duvel

exit loop if "stef is zat"

end loop

 

Stuur eens een mailtje met je gegevens als je wilt, als we eens een FM-burendienst kunnen bewijzen...

  • 0
Geplaatst:

Het kan ook zo:

 

If(GetRepetition(Globaal; 1)=Input;"";"x") &

If(GetRepetition(Globaal; 2)=Input;"";"x") &

If(GetRepetition(Globaal; 3)=Input;"";"x") &

If(GetRepetition(Globaal; 4)=Input;"";"x") &

If(GetRepetition(Globaal; 5)=Input;"";"x")

 

Als het veld leeg is dan kun je inloggen anders niet

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...