Jump to content
  • 0

Repeterende velden


Jimjams

Question

Posted

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 answers to this question

Recommended Posts

  • 0
Posted

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
Posted

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
Posted

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
Posted

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
Posted

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
Posted

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
Posted

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
Posted

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
Posted

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

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
Posted

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
Posted

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
Posted

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
Posted

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
Posted

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...