Arnoud Posted January 13, 2004 Posted January 13, 2004 Ik weet niet waarom dit niet werkt. Ik heb 4 velden gemaakt: 2 globals, 1 calculatie en 1 van het type datum. gStartdatum (datum) gEinddatum (datum) cPeriode = gStartdatum & "..." & gEinddatum (uitkomst=tekst) leverdatum (datum) Script: FindMode() SetField("leverdatum";"cPeriode") PerformFind(Replace Foundset) Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 Nee, dat kan niet met SetField: het SetField-commando werkt uitsluitend met data die overeenkomen met het datatype van het veld. Met SetField kan je dus geen drie puntjes plakken in een datumveld! Vroeger had FileMaker daar Paste Result voor. Nu heet dat Insert Calculated Result. Quote
0 AvD Posted January 13, 2004 Posted January 13, 2004 Heb het gevonden: staat hier nog eens gedetailleerd uitgelegd: http://www.avd-ci.be/tip016.htm Tip 16 al! Was er dus zelf al vroeg mee geconfronteerd... Quote
0 Theo2 Posted January 14, 2004 Posted January 14, 2004 FindMode() SetField("leverdatum";"cPeriode") PerformFind(Replace Foundset) Dit gaat ook mis omdat een calculatie in de Findmode niet werkt. Een oplossing daarvoor is om in de browse mode het calculatieveld over te zetten naar een globaal veld en vervolgens naar de find mode gaan en gebruik te maken van het globale veld. Quote
0 Sanne Posted January 14, 2004 Posted January 14, 2004 Theo, hoewel je in algemeenheid gelijk hebt, had de door jou geschetste oplossing toch echt niet gewerkt in het door Arnoud vertelde probleem, omdat - en ik quote AvD: het SetField-commando werkt uitsluitend met data die overeenkomen met het datatype van het veld. Het is niet mogelijk om met een set-field een stukje tekst (zijnde de drie puntjes) in een datumveld te zetten. Ook niet als die tekst in een globalveld staat in zoekmodus. Quote
0 Sanne Posted January 14, 2004 Posted January 14, 2004 Nu probeer ik zelf over het algemeen te vermijden dat ik het klembord nodig heb (en op insert-calculated-result ben ik ook niet dol), dus wat vinden jullie van deze oplossing: • Datumveld: "Datum" - een veld waarin een datum kan worden ingevoerd • Calculatieveld-uitkomst-getal "_cN_Datum": [Datum] - dit levert je een calculatie op waarin de datum als nummer in vermeld staat. • Global-Datumveld "_gD_DatumBegin" - een globaalveld om de te-zoeken begindatum in te vullen • Global-Datumveld "_gD_DatumEind" - een globaalveld om de te-zoeken einddatum in te vullen • Calculatieveld-uitkomst-tekst "_cT_DatumRange": [_gDatumBegin & "..." & _gDatumEind] - dit levert een calculatie met een getal wat de begindatum is, drie puntjes, en een getal wat de einddatum is • Global-Tekstveld "_gT_DatumRange" - een globalveld om de datumrange in op te slaan Het script zou als volgt kunnen zijn: - Check of globalen begindatum en einddatum gevuld zijn - Stel "_gT_DatumRange" in op "_cT_DatumRange" - Ga naar Zoek # Je staat nu in zoekmodus met in een globalveld de gewenste datumrange (dankjewel Theo ) - Stel "_cN_Datum" in op "_gT_DatumRange" - Voer zoekbewerking uit Volgens mij heb je dan wat je wilt zonder knip/plak. Quote
0 Sanne Posted January 14, 2004 Posted January 14, 2004 Ik bedacht: het calculatieveld met de datum-range erin kan - na het testen - vervallen, en de calculatie kan direct in het script gebruikt worden. Quote
0 Stamper Posted January 14, 2004 Posted January 14, 2004 Ben geen ervaren FM-gebruiker, doch met veel vallen en opstaan, heb ik iets kunnen formuleren waardoor men records via een script kan opzoeken. In dit geval betreft het alle records van de vorige maand, bijvoorbeeld december 2003, en waarbij ik slechts één veld gebruik nl datum. Als ik het goed voor heb, dient Arnaud alle leverdatums tussen een bepaalde periode te zoeken. Misschien is dit bestand voor hem wel de oplossing of toch de weg er naar toe. Records vorige maand.fp5 Quote
0 AvD Posted January 14, 2004 Posted January 14, 2004 en op insert-calculated-result ben ik ook niet dol Waarom niet, Sanne? dus wat vinden jullie van deze oplossing Om eerlijk te zien: veel ingewikkelder dan nodig. Wat in die korte Tip 16 staat werkt perfect. Je hebt geen 6 maar 2 velden nodig en ook het script lijkt me eenvoudiger voor de beginner: niet nodig iets naar globals te brengen. Maar natuurlijk, met FileMaker is er nooit één enkele manier. Ik ben wel nieuwsgierig naar het antwoord op de eerste vraag want ik vermoed dat ik iets ergs over het hoofd zie (iets zoals hetgeen overkwam aan zij die lege velden zochten met ="" tot bleek dat dat niet meer werkte ). Quote
0 Sanne Posted January 15, 2004 Posted January 15, 2004 Voor de scriptstap "Insert calculated result" MOET het veld waarin de calculatie wordt gezet aanwezig zijn op de layout. Dat kun je niet garanderen. Als je dus een layout aanpast en het betrokken veld verwijdert, dan zal het zoek-script niet meer werken. FileMaker staat je toe om een veld van een layout te verwijderen. Er zal geen melding komen dat er dan een procedure niet meer zal werken. "Insert calculated result" zal overigens voor de meeste FileMaker-toepassing prima werken. Ik probeer zo "veilig" mogelijk te programmeren. Hou er rekening mee dat ik werk met complexe toepassingen die door meerdere programmeurs zijn gemaakt en worden onderhouden. Mijn voorbeeld geeft je inderdaad een complexere, maar veiliger methode. Het kan als alternatief voor "Insert calculated result" gebruikt worden. Het zorgt ervoor dat je niet afhankelijk bent van de aanwezigheid van het veld op de actieve layout. Quote
0 AvD Posted January 15, 2004 Posted January 15, 2004 Zo in die context heb je natuurlijk volkomen gelijk. Als je zelf niet als enige op de commandobrug staat... Dan heeft het misschien ook geen zin te pleiten voor een aparte lay-out die default alle velden bevat, maar verder nooit actief getoond wordt. Quote
0 Arnoud Posted January 15, 2004 Author Posted January 15, 2004 Zo, ik heb weer wat losgemaakt merk ik. Het voorbeeldje van Sanne is een goede toepassing van het feit dat de datatypen van de SETFIELD opdracht gelijk dienen te zijn. Ik heb eerst ook met globals en calculaties zitten goochelen maar wist niet waarom het niet goed ging. Tja waarom zou je de FMP Help consulteren als AvD binnen 5 minuten, tegen middernacht reageert. Bedankt allemaal!. Arnoud Quote
0 Sanne Posted January 17, 2004 Posted January 17, 2004 Dan heeft het misschien ook geen zin te pleiten voor een aparte lay-out die default alle velden bevat, maar verder nooit actief getoond wordt. Integendeel, in al mijn toepassingen bevat elke tabel (database) een layout genaamd "Alle velden"/"All fields". Werken met FileMaker betekent dat je er toch niet onderuit komt om stappen als "Insert calculated result" en erger: "Paste" of "Replace" te gebruiken. Dat is nou eenmaal het gereedschap waar je als FileMaker-programmeur mee werkt. Voorafgaand aan deze scriptstappen ga ik naar de layout "Alle velden". Altijd. En voor het in dit onderwerp betrokken voorbeeld is "Insert ..." voorafgegaan door een "Go to layout [Alle velden]" natuurlijk ook prima: bijvoorbeeld als je het aantal velden in je database zo klein mogelijk wenst te houden. Overigens, natuurlijk betekent een layout die "Alle velden" heet, nog niet dat alle velden er ook daadwerkelijk op staan ... Quote
0 Sanne Posted January 17, 2004 Posted January 17, 2004 In dit geval betreft het alle records van de vorige maand, bijvoorbeeld december 2003, en waarbij ik slechts één veld gebruik nl datum. Stamper, ik zie dat je hier gebruik maakt van de functie "Today". Je kunt in plaats van "Today" ook de functie "Status(CurrentDate)" gebruiken. En ik zie dat je in de calculatie gebruik maakt van het scheidingsteken "/". Maar als ik een kloon van deze database opsla op een (bijvoorbeeld) Nederlands systeem, dan wordt de datum opgeslagen als "25-12-2003" (ongeacht hoe je op de layout aangeeft hoe het eruit moet zien). Het script zal dan niet meer werken. In plaats van de tekst die je nu calculeert kun je een calculatie maken met de functies Date() en DateToText(). De calculatie wordt dan wat "steviger" voor gebruik onder verschillende omstandigheden. En zo kan ik nog wel uren doorgaan over werken met datum-gegevens in FileMaker ... Quote
0 Tjico30 Posted April 14, 2004 Posted April 14, 2004 PPPPFFFFFFFFFFFF, mijn vraag heeft wel wat teweeg gebracht. Maar helaas (met alle respect) nog geen antwoord op mijn vraag. Quote
0 AvD Posted April 14, 2004 Posted April 14, 2004 PPPPFFFFFFFFFFFF, mijn vraag heeft wel wat teweeg gebracht.Maar helaas (met alle respect) nog geen antwoord op mijn vraag. Over welke vraag heeft Tjico30 het? En waarom blijft zijn toetsenbord hangen op de P en de F? Quote
0 Sanne Posted August 8, 2004 Posted August 8, 2004 Over welke vraag heeft Tjico30 het? Voor alle volledigheid: Tjico is hier aan het posten geweest in het verkeerde draadje. Hij dacht dat hij zat in: http://www.clarify.net/viewtopic.php?t=1469 - <=today, van Tjico30 Quote
Question
Arnoud
Ik weet niet waarom dit niet werkt.
Ik heb 4 velden gemaakt: 2 globals, 1 calculatie en 1 van het type datum.
gStartdatum (datum)
gEinddatum (datum)
cPeriode = gStartdatum & "..." & gEinddatum (uitkomst=tekst)
leverdatum (datum)
Script:
FindMode()
SetField("leverdatum";"cPeriode")
PerformFind(Replace Foundset)
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.