Ga naar inhoud
  • 0

Voorloopnullen voor een sleutelveld


rickel

Vraag

11 antwoorden op deze vraag

Aanbevolen berichten

  • 0
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.

Link naar reactie
  • 0

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.

Link naar reactie
  • 0
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

Link naar reactie
  • 0

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.

Link naar reactie
  • 0

@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

Link naar reactie

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.

Gast
Beantwoord deze vraag...

×   Geplakt als verrijkte tekst.   Plak in plaats daarvan als platte tekst

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...