degard Posted March 18, 2011 Posted March 18, 2011 Hallo mensen, ben vandaag voor het eerst op deze site. Na heel veel zoeken om iets voor elkaar te krijgen in FM sta ik met mijn handen in het haar. Het volgende Ik wil een script maken met het volgende: Ik heb bestaande ID codes geinpoorteerd bv 1000, 10005, 2000, 20005. Zoals je ziet zitten er gaten in. nu wil ik dat er zodra er een nieuw record wordt aan gemaakt en ik type bv 10002 in dat dit script zoekt of deze nog vrij is dan mag hij deze gebruiken anders het eerst volgende nummer dat vrij is. Weet iemand hoe ik dit moet doen. Alvast bedankt, Ron Quote
JeanWM Posted March 21, 2011 Posted March 21, 2011 Welkom. Voor wat je vraag betreft: te weinig gegevens om je een mogelijke oplossing te geven. Je reeks loopt van pakweg 1000 tot 20005. Moet de volgende dan een opvolging van de kleinste waarde zijn?, in dit geval 1001 of wil je een bepaalde waarde ingeven en dient het systeem de eerst volgende van die waarde trachten te vinden?. Of moeten alle mogelijke gaten vanaf de kleinste waarde zondermeer opgevuld worden. Dat is een heel andere benadering. Misschien zou het beter zijn indien je even wilt uitleggen waarom je dit nodig hebt en/of wat je wil bereiken. Quote
degard Posted March 22, 2011 Author Posted March 22, 2011 Bedankt voor je reactie. Ik probeer het te omschrijven. Er is een bestand met bestaande ID codes deze worden ook gebruikt als inlogcode in een ander programma. Helaas mag ik deze niet vervangen want dan was het zelfs voor mij makkelijker. De ID code bestaat uit 6 nummers en heeft wel 6 verschillende start nummers. Ik bedoel je hebt 100000 t/m 199999 en bv 200000 t/m 299999 maar ook in 3 en 4 enz enz series. Nu wil ik dat als ik een nieuw ID aanmaak en ik type bv 123456 in dat mijn data zeg of deze nog vrij is, is dit niet het geval dan de eerst volgende hoge nummer wat wel vrij is. Dit moet ook gebeuren met als ik 213456 typ of 321456. De data moet het vrije nummer of het eerst volgende hogere nummer opgeven wat nog vrij is. Het moet niet uit maken of ik nu met een 1,2 of 3 begin. Ik weet wel dat ik veel nummers tot mijn beschikking heb. Ik hoop met deze uitleg dat het iets makkelijker is om het te begrijpen. Vgr. Ron Quote
JeanWM Posted March 22, 2011 Posted March 22, 2011 Als ik het goed begrijp zal je range gaan van 100000 tot 999999. In die range zou je moeten weten welke nummers er niet zijn, opgedeeld in een sub-range per 100000. Quote
degard Posted March 22, 2011 Author Posted March 22, 2011 Klopt, de range loopt van 100000 t/m 999999. Het klopt ook dat ik dan graag wil weten welke nummers er niet zijn. (niet bezet, dus) En idd in een sub range van 100000 Quote
JeanWM Posted March 22, 2011 Posted March 22, 2011 Welke versie van FileMaker gebruik je? Om te weten welke features je ter beschikking hebt. En het te gebruiken nummer moet altijd groter zijn. Het is dus niet het eerst vrije nummer in de range. Quote
degard Posted March 22, 2011 Author Posted March 22, 2011 Filemaker versie = Filemaker Pro Advanced version 11.0v3 Het gebruiken nummer is altijd hoger dan het op geven nummer (nooit lager). Het is niet het eerste vrije nummer in range. Je zal wel denken (wat is dit !!!) Korte omschrijving: Ken fm al vanaf 1992 heb me zelf veel aangeleerd. sinds kort twee cursussen gedaan t/m gevorderde. Wil in sept expert training gaan doen, maar wil gewoon meer kunnen voor deze cursus in fm om het te begrijpen. (dus kom ik met problemen, zoals deze) Van daar deze vraag. Quote
JeanWM Posted March 22, 2011 Posted March 22, 2011 Kan dit je op weg helpen. Ik heb het even doorgegeven aan 1 van mijn studenten. Je requirement: "Het is niet het eerste vrije nummer in range.", begrijpen we niet helemaal. De return zal het eerst vrije hogere nummer zijn in de sub-range. Afhankelijk van de range kan het wel even duren vooralleer de lijst opgebouwd is. Het is dus beter dat je het uitprobeert met nummers dicht bij het einde van een sub-reeks, zowat in de buurt van x999xx Credit to Anna Castillo, based on a technique by Stef. MissingserialfinderTest.fp7 Quote
degard Posted March 23, 2011 Author Posted March 23, 2011 Vandaag je bijlage bekeken en een jubel stemming ging door me heen. Moet eerlijk bekennen dat ik het niet had begrepen "eerste vrije nummer in range" Maar ik begrijp het nu. Antw. moet dus zijn ja. Wel gemerkt dat ik script twee moest uitzetten om te kunnen zien hoe het een en ander werkt. Iedere keer als ik iets wilde doen kwam het beroemde appeltje/punt te voor schijn. Zelfs het afsluiten ging niet meer. Ik probeer te achter halen in dat script hoe dat weg moet. In ieder geval wil ik je heel erg bedanken voor je hulp en ook je student. Deze script stap had ik zelf nooit kunnen bedenken. Gr Ron Quote
JeanWM Posted March 23, 2011 Posted March 23, 2011 Het vraagt wat tijd om de reeks op te bouwen. Daarom dat het beter is om bij het testen zo dicht mogelijk tegen het einde van een sub-reeks te blijven. Je zou ook een bijkomende sub-reeks kunnen instellen, zodat je met schijven van 500 nummers gaat werken, Hiervoor trigger je bv. op het eerste en vierde cijfer. Ipv, een sub reeks te hebben van bv. 100000 tot 200000 (trigger op eerste cijfer, met range van 100000), trigger je op het eerste cijfer en nxxyxx, waar y = 5. Of iedere andere combinatie. Dat zal de zoekreeks kleiner maken. Je moet er dan wel rekening mee houden dat als er geen vrij nummer gevonden wordt, het systeem moet overspringen naar de volgende reeks. Het is gemaakt door een 'gevorderde in opleiding', dus voor jou zal dat niet moeilijk zijn om combinaties op te bouwen. Maar dan zou ik de voorkeur geven aan 1 of meerdere (combinatie) custom functions, waarbij je eerst de aanwezige IDs toont in compacte vorm en pas daarna, indien nodig, het systeem laat zoeken naar een geschikt nummer. Je kunt dan zelf (visueel) zien welk nummer te gebruiken. Dat kan in bepaalde gevallen sneller werken. Een script trigger werd gebruikt om te vookomen dat er gebruikt moet gemaakt worden van de combinatie 'invoer en klik op knop', of invoer via custom dialog. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.