“Twaalf” delen door “2”

A guy is standing on the corner of the street smoking one cigarette after another. A lady walking by notices him and says: “Hey, don’t you know that those things can kill you? I mean, didn’t you see the giant warning on the box?!” “That’s OK” says the guy, puffing casually “I’m a computer programmer” “So? What’s that got to do with anything?” ”We don’t care about warnings. We only care about errors.”

Ja, helaas gaat het één vaak gepaard met het ander. En dan spreek ik uit ervaring. Recentelijk ben ik bezig geweest met het programmeren van een database in Microsoft Access en het vaak genoemde voorbeeld dat als er een komma verkeerd staat, je code corrupt is, is niet overdreven. Sterker nog, je mag blij zijn als je weet waar de foutmelding ontstaat! Zo ben ik na vier uur zoeken achter het verbazingwekkende feit gekomen dat de formule Format(12, “currency”) de betreffende data naar het formaat “currency” omzet, maar er niet het formaat “currency” van maakt. Met andere woorden, als ik het nummer “12” opsla in een tekstveld en dit vervolgens weergeef als currency (“€12”), dan is Access niet in staat hier berekeningen mee te doen. Immers, het is tekst. Je kan toch ook geen berekeningen met het woord “twaalf” doen?

“Dan maak je er toch een nummer veld van, in plaats van een tekst veld?” hoor ik je hardop denken. Ja, goed punt, maar dan moet alle input in dat veld ook daadwerkelijk een nummer zijn. Als de input “nvt” is, dan gaat je database kapot. In principe mag dat geen groot obstakel zijn, je kunt immers simpel alle velden met “nvt” omzetten naar een “0”. Ik heb alleen een database gecreëerd met zoveel afhankelijke lagen dat zelfs de regisseur van Inception hier een puntje aan kan zuigen. Het aanpassen van “nvt” naar 0 zal de lopende processen dusdanig ontwrichten dat je blij mag zijn dat de computer niet begint te roken.

tol

Mijn database is inmiddels in staat om automatisch rapportages te draaien per week, hij update de rapportages na iedere individuele verandering, hercalculeert de bijbehorende formules en creëert een forecast van de te verwachten ingelegde orders voor het aankomende jaar, per week. De database is zonder ingevoerde data 20MB, bevat een lijst van query in query in form in report waar je “u” tegen zegt en bij het opstarten doet hij evenveel berekeningen als een satelliet die zijn traject rond de aarde wil kalibreren. Maar een waarde omzetten naar valuta en deze delen door twee was teveel gevraagd.

Enfin, na vier uur zoeken kwam ik er op pagina 34 van een forum achter dat er ook iets bestaat als een “data type conversion function” en was ik in staat mijn “12” weer te geven als “€12” en er vervolgens berekeningen mee te doen. Hoezee. Maar (en ik quote): “If you encounter these errors, your database is not properly normalized to begin with, and you might as well consider starting over altogether. That being said…” en toen kwam de oplossing die ik voor de lunch al had willen weten.

De database staat inmiddels en aanstaande dinsdag gaan we live. Ik kan met recht zeggen dat de afgelopen vier weken prachtig waren. Een leercurve nog steiler dan de Mont Ventoux. En uiteindelijk laat je iets achter op de afdeling wat hopelijk in lengte van dagen nog wordt gebruikt. Op naar mijn volgende opdracht.

A man flying in a hot air balloon suddenly realizes he’s lost. He reduces height and spots a man down below. He lowers the balloon further and shouts to get directions, “Excuse me, can you tell me where I am?” The man below says: “Yes. You’re in a hot air balloon, hovering 30 feet above this field.” “You must work in Information Technology,” says the balloonist. “I do” replies the man. “How did you know?” “Well,” says the balloonist, “everything you have told me is technically correct, but it’s of no use to anyone.” The man below replies, “You must work in management.” “I do,” replies the balloonist, “But how’d you know?” “Well”, says the man, “you don’t know where you are or where you’re going, but you expect me to be able to help. You’re in the same position you were before we met, but now it’s my fault.”

Tim de Wolf

4 gedachten over ““Twaalf” delen door “2””

  1. Leuk geschreven Tim! Je had overigens het veld ook ‘Nullable’ kunnen maken, dan was de NULL waarde gelijk aan “nvt” en het getal “0” gewoon “€ 0” (tenminste, ik mag hopen dat MsAccess dat überhaupt ondersteund) 😉

    1. Hoi Roy, thanks! Volgens mij ondersteund Access Nullable niet, althans na een quick google kon ik niet direct wat vinden. Access is een kriem als het op NULL waardes aankomt en dat moet je eigenlijk bij het opbouwen van je database al goed weten, anders zit je later met de gebakken peren, zoals ik. Zie dan ook het stukje: “If you encounter these errors, your database is not properly normalized to begin with, and you might as well consider starting over altogether. That being said…”. Volgende keer als ik dergelijke problemen heb stuur ik wel even een berichtje naar Perfacilis 😉

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *