rickel Geplaatst: 9 augustus 2008 Delen Geplaatst: 9 augustus 2008 Ik heb een sleutel (numeriek) van 6 posities. Zodra ik een waarde in een sleutelveld neerzet, zou ik graag voorloopnullen gedisplayed tot het aantal van 6 is bereikt. Is dit mogelijk in FMP9? Quote Link naar reactie
0 eroos Geplaatst: 9 augustus 2008 Delen Geplaatst: 9 augustus 2008 (aangepast) Case ( getal < 10 ; "00000" & getal ; getal < 100 ; "0000" & getal ; getal < 1000 ; "000" & getal ; getal < 10000 ; "00" & getal ; getal < 100000 ; "0" & getal ; getal ) Notatie kan wellicht korter... 10 augustus 2008 aangepast door Gast Quote Link naar reactie
0 AvD Geplaatst: 10 augustus 2008 Delen Geplaatst: 10 augustus 2008 Ja, dat kan veel korter: Right("00000" & getal;6) Quote Link naar reactie
0 eroos Geplaatst: 10 augustus 2008 Delen Geplaatst: 10 augustus 2008 AvD... en wat doe je dan als het getal uit 7 cijfers gaat bestaan in de loop van de tijd? If ( Length ( getal ) > 6 ; getal ; Right("00000" & getal;6) ) zoiets...? Quote Link naar reactie
0 AvD Geplaatst: 10 augustus 2008 Delen Geplaatst: 10 augustus 2008 zoiets...? Dat zou zoiets kunnen zijn, afhankelijk van je analyse. Het probleem stelt zich alleen wanneer het zich stelt, als je begrijpt wat ik bedoel. En dat zou zich niet mogen stellen als de analyse OK is. Als je je klantenbestand uitbreid met jaarlijks te hernummeren ID's, ik bedoel als je elke eerste januari terug van 0 begint met een jaarcode ervoor, dan vraag ik altijd hoeveel nieuwe klanten ze dit jaar verwachten: meer dan 9 (grapje!), meer dan 99 (meestal ook een grapje, maar bij vele kleine zelfstandigen niet), meer dan 999 enzovoort. Ik voorzie dan het aantal digits. Als ik per jaar zeker niet meer dan 99 999 facturen verwacht, dan volstaan vijf digits. Elk bedrijf kan dit wel inschatten, desnoods neem je een nul meer. Je vraag is hiermee hopelijk beantwoord. Quote Link naar reactie
0 JeanWM Geplaatst: 11 augustus 2008 Delen Geplaatst: 11 augustus 2008 Wat me opvalt is: ...een sleutel (numeriek) van 6 posities Als daar nu meer dan 6 posities zouden voorkomen, zelfs als je er 7 voorziet, wil ik Murphy toch even thuislaten. Kwestie mogelijke relaties niet te breken. Right("00000" & number;Case( Length ( number ) ≤ 6;6;Length ( number ))) kan daar bij helpen. Quote Link naar reactie
0 BDK Geplaatst: 13 augustus 2008 Delen Geplaatst: 13 augustus 2008 Ja, dat kan veel korter: Right("00000" & getal;6) wat ik me bij dit soort kwesties wel eens afvraag is: levert zo’n glanzend efficiënte notatie als die van avd ook een efficiëntere afhandeling door filemaker op? of om het anders te stellen: is spaarzaam maar doeltreffend formuleren hetzelfde als efficiënt programmeren in termen van milliseconden, processorwatts en zeespiegelstijging? of betreft het ‘slechts’ een verschil in zweet, RSI en esthetiek? iemand? groet, bdk Quote Link naar reactie
0 AvD Geplaatst: 14 augustus 2008 Delen Geplaatst: 14 augustus 2008 Dank zij jou, bdk, heb ik nu geleerd dat het nog korter kan: je bespaart tenminste op de SHIFT-toets. Quote Link naar reactie
0 JeanWM Geplaatst: 14 augustus 2008 Delen Geplaatst: 14 augustus 2008 wat ik me bij dit soort kwesties wel eens afvraag is: levert zo’n glanzend efficiënte notatie als die van avd ook een efficiëntere afhandeling door filemaker op? Ge moogt gerust zijn.... of om het anders te stellen: is spaarzaam maar doeltreffend formuleren hetzelfde als efficiënt programmeren in termen van milliseconden, processorwatts en zeespiegelstijging? of betreft het ‘slechts’ een verschil in zweet, RSI en esthetiek? iemand? someFieldResult = If(GetAsNumber(thisFieldValue)=0; "..,,,."; If(GetAsNumber(thisFieldValue)=1; ".,.,,."; If(GetAsNumber(thisFieldValue)=2; ".,,.,."; If(GetAsNumber(thisFieldValue)=3; ".,,,.."; If(GetAsNumber(thisFieldValue)=4; ",..,,."; If(GetAsNumber(thisFieldValue)=5; ",.,.,."; If(GetAsNumber(thisFieldValue)=6; ",.,,.."; If(GetAsNumber(thisFieldValue)=7; ",,..,."; If(GetAsNumber(thisFieldValue)=8; ",,.,.."; If(GetAsNumber(thisFieldValue)=9; ",,,..."; "")))))))))) zal alleen bij beginners indruk maken....terwijl een Case() zelfs beter zou geweest zijn... someFieldResult = Choose(GetAsNumber(thisFieldValue); "..,,,.";".,.,,.";".,,.,.";".,,,..";",..,,.";",.,. ,.";",.,,..";",,..,.";",,.,..";",,,...";"") is al heel wat beter, terwijl someFieldResult = Middle("..,,,..,.,,..,,.,..,,,..,..,,.,.,.,.,.,,.. ,,..,.,,.,..,,,...", TextToNum(thisFieldValue) * 6 + 1, 6) op alle vlakken energie zal besparen en het meest efficient is, terwijl het nog steeds 'verstaanbaar' en 'leesbaar' is. Of nog, iets waar er een toggle als resultaat moet zijn zien we dikwijls iets in de aard van: If(related::fieldStatus = 0 or IsEmpty (related::fieldStatus); 1 ; 0) Alternating is niet nodig: not GetAsBoolean(related::fieldStatus) of zelfs beter Abs(related::fieldStatus – 1) Zowel op vlak van berekeningen als op vlak van scripting is eenvoud nog altijd de kortste, beste en doeltreffendste weg. Quote Link naar reactie
0 BDK Geplaatst: 14 augustus 2008 Delen Geplaatst: 14 augustus 2008 @avd dat met die shifttoets is inderdaad waarschijnlijk een direct gevolg van het werken met filemaker: in de loop van de jaren ben ik tot de conclusie gekomen dat er voor hoofdletters toch echt veel handiger functies te verzinnen zijn dan het toch redelijk zinloze markeren van het begin van een zin en als filemaker ergens in een formule hoofdletters wil hebben plaatst het programma ze zelf toch wel. @ jean, prachtig. maar hoe weet je dat Abs(related::fieldStatus – 1) beter is dan not GetAsBoolean(related::fieldStatus) lijkt me iets dat je ergens geleerd moet hebben, want zo op t oog zijn beide formuleringen even kernachtig? de eerste heeft een soort van wederkerigheid in zich (abs ( -1 )) die wellicht een extra cycle vergt maar de tweede heeft dan weer NOT wat weer meer inspanning zou kunnen vergen dan niet NOT? (we zijn nu wel echt op de afdeling haarkloverij beland ) groet, bdk Quote Link naar reactie
0 AvD Geplaatst: 14 augustus 2008 Delen Geplaatst: 14 augustus 2008 we zijn nu wel echt op de afdeling haarkloverij beland Quote Link naar reactie
0 eroos Geplaatst: 15 augustus 2008 Delen Geplaatst: 15 augustus 2008 ...Zou rickel er wat aan gehad hebben...? Quote Link naar reactie
Vraag
rickel
Ik heb een sleutel (numeriek) van 6 posities. Zodra ik een waarde in een sleutelveld neerzet, zou ik graag voorloopnullen gedisplayed tot het aantal van 6 is bereikt. Is dit mogelijk in FMP9?
Link naar reactie
11 antwoorden op deze vraag
Aanbevolen berichten
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.