Dynare Posted May 17, 2011 Posted May 17, 2011 Zoals de titel al zegt. is dit mogelijk? Ik ben druk bezig geweest hiermee maar ben er nog niet helemaal uit. jullie hebben mij vorige keer geholpe met Hoogste ID + 1 met x relatie en een berekening. Alleen werkt dat met een dataset en ik wil dat die direct uit de database haalt. Toen heb ik gekeken naar SQl uitvoeren dat werkte wel direct op de database allen werkt het dan weer neit van de iPad af. Weet iemand een oplossing? Quote
0 the_ies Posted May 17, 2011 Posted May 17, 2011 Ik zou hem vast "klaar zetten" in een global bij het aanmaken van een record. Bij het aanmaken van een nieuwe kan hij dit nummer dan gelijk in het veld plaatsen om hem vervolgens weer op te hogen. Bedoelde je dit? groet, Quote
0 SuperWimmie Posted May 18, 2011 Posted May 18, 2011 Misschien een optie: Aanmaken nieuw venster, Laat alle records zien Bekijken hoogste nummer Opslaan in een $$variabele of globaal veld Venster sluiten, je komt dan weer in het oorspronkelijke venster met de gevonden set Zoiets? Quote
0 Ari Posted May 18, 2011 Posted May 18, 2011 Maak een selfjoin met zo'n kruisje, laat de functie MAX los op je ID en je hebt de hoogste waarde te pakken. Quote
0 Dynare Posted May 19, 2011 Author Posted May 19, 2011 @ ari volgens mij heb ik dat al geprobeert.bedoel je een x relatie en dan op het ID veld berekening Max + 1 ? @superwimmie Dit zou ik wel kunnen proberen. heb alleen even beginnetje nodig waar moet ik beginnen? @the_ies Ik begrijp niet helemaal wat je bedoelt. zou je anders kunnen uitleggen? Allemaal alvast bedankt voor jullie hulp. Quote
0 the_ies Posted May 19, 2011 Posted May 19, 2011 Wat ik bedoel: maak een script die het volgende doet: new record vul veld record ID met de inhoud van global last recordID vul veld globals record ID met inhoud record ID +1 Zo staat het nieuwe nummer al klaar bij het aanmaken van de volgende Snappie? Quote
0 Dynare Posted May 20, 2011 Author Posted May 20, 2011 Ik snap deels wat je bedoelt maar zoals jij het zegt. haalt die dat direct de gegevens van veld ID aan de MySQl databas of haalt die het uit de data set van de MySQl database. Want zodra ik er met meerdere mensen vanaf Ipad records ga aanmaken gaat het fout dan krijg je meerdere keren records met hetzelfde id Quote
0 the_ies Posted May 20, 2011 Posted May 20, 2011 Ik haal het direct uit de Filemaker database. van MysQl weet ik onvoldoende. Quote
0 Dynare Posted May 23, 2011 Author Posted May 23, 2011 Met auto increment Pakt die niet automatisch het hoogste nummer bijvoorbeeld je hebt: 1, 2, 3, 4, 5, 6, 7, Je verandert bijvoorbeeld 7 in 10 dat gaat auto increment gewoon verder met tellen bij 8 en niet 10 Quote
0 trikke Posted May 23, 2011 Posted May 23, 2011 Auto-increment doe je om een unieke primary key te maken. Die hoor je achteraf niet te wijzigen. Quote
0 JeanWM Posted May 23, 2011 Posted May 23, 2011 Je laat best de auto incremental over aan FileMaker en plaatst de ID capture afzonderlijk. Op die manier kun je testen of er ergens een missing number is, dus niet alleen "het laatste" of "het hoogste". Bij het aanmaken van een nieuw record test je eerst of er een missing number is in de data range, en dan neem je eerst dat nummer. Is er geen missing nummer, dan pas neem je het aanwezige hoogste + 1. Het geheel kan gemakkelijk in 1 script gegoten worden. Quote
0 Dynare Posted May 24, 2011 Author Posted May 24, 2011 @ JeanWM dat lijkt me wel wat dat wil ik wel even uitproberen. Hoe moet ik beginnen met het script?? Quote
0 JeanWM Posted May 24, 2011 Posted May 24, 2011 Je bepaalt de begin range en de end range, die waarde zet je elk in een variable. Dan loop je door al de records en isoleert de missing nummers. Dat gaat gewoon door het parrallel laten meelopen van een counter. De missing numbers zet je in een globaal veld of in een variable, afhankelijk hoe je verder wilt werken. Wil je zelf bepalen welk het volgende nummer is, kies je eentje uit de lijst om het volgende record aan te maken. Kies je voor "het eerste missing", laat je FM het eerste van de lijst nemen om het volgende record aan te maken. Zijn er geen missing numbers, laat je FM het laatste in de variable nemen + 1 om het volgende record aan te maken. Het dynamische aan dit systeem is dat je zelf een reeks kunt instellen. Stel dat 100000+ records hebt en je weet dat er in de reeks van 99500 tot 100000 missing nummers zijn. Dan laat je het systeem gewoon zoeken in de reeks 99500 tot 100000. Om dat mogelijk te maken gebruik je een Custom Function die de nummers in een reeks gaat plaatsen. Een resultaat in de aard van: 12, 14, 20 to 35, 38, 50 tot 68 etc... Daarmee krijg je een visual op de nummers die in gebruik zijn en kun je de zoekreeks bepalen. Dat scheelt dan weer enorm in zoektijd. FileMaker hoeft niet doorheen 100000+ records te lopen, een beperkte reeks is voldoende, en die stel je zelf in. Quote
0 Dynare Posted May 25, 2011 Author Posted May 25, 2011 Bedankt voor de hele mooie uitleg maar dat gaat mij niet lukken denk als Filemaker beginner. Quote
0 JeanWM Posted May 25, 2011 Posted May 25, 2011 Een voorbeeld dan maar. Geef wel een waarde in dicht tegen een veelvoud van 100000, zoals 399990, of het geheel is weg voor een half uur of meer. Het is gemaakt voor kleine reeksen. Als je een grote reeks ingeeft zal het ook wel werken, maar het vraagt meer tijd. Of pas de vermenigvuldigings factor aan in veld zc_checkStartingRange_cn. MissingserialfinderTest.fp7 Quote
0 Henk R Posted May 31, 2011 Posted May 31, 2011 Ik gebruik voor het nummer van bv. fakturen een aparte tabel met maar 1 veld => het laatst gegeven faktuurnummer. Wanneer er een nieuw record wordt aangemaakt, verhoog ik deze waarde met 1 en plak deze in het echte record. Moet ik een een reeks verhogen (bv van 2010... naar 2011....) dan pas ik dit veld aan. Dit heeft als voordeel dat filemaker niet een hele reeks records hoeft door te rekenen of een foundset opnieuw moet worden terug gezet. Je vindt hiermee geen overgeslagen nummers terug. Verder moet je wel zorgen dat de scripstappen ook gelijk de waarde opslaat (dus niet een record actief houden) anders kan dit problemen geven voor een 2de gebruiker. Het systeem is ook niet helemaal waterdicht als er heel veel nummers worden gevenen in een korte tijd zal deze functie niet waterdicht zijn. Met globaalvelden vindt ik het altijd gevaarlijk dat hier voor elke gebruiker een andere waarde in kan staan. Quote
Question
Dynare
Zoals de titel al zegt. is dit mogelijk?
Ik ben druk bezig geweest hiermee maar ben er nog niet helemaal uit. jullie hebben mij vorige keer geholpe met Hoogste ID + 1 met
x relatie en een berekening.
Alleen werkt dat met een dataset en ik wil dat die direct uit de database haalt.
Toen heb ik gekeken naar SQl uitvoeren dat werkte wel direct op de database allen werkt het dan weer neit van de iPad af.
Weet iemand een oplossing?
16 answers to this question
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.