If expressie in vba voor rapporten

Status
Niet open voor verdere reacties.

muufley

Gebruiker
Lid geworden
23 sep 2010
Berichten
47
Hallo, in Access 2007 heb ik een database voor stockbeheer van voedingsproducten. Dagelijks stuur ik stock-rapporten door via mail naar de afdelingshoofden van mijn bedrijf. In het rapport worden de totalen van de gewichten berekend van de producten. Dit gebeurt in de "footer" van het rapport.
Wat ik nu wil verwezenlijken is een "target level" stock en van daaruit het gecalculeerde "overstock". De "target level" stock is voor elk product een variabel streefvolume afhankelijk van product (vb voor product A 1000kg, product B 500kg, product C 2000kg). De "overstock" is dan gewoon de som van de gewichten van het product min de "target level" (vb Product A target level= 1000kg en somgewichten is 1500kg dan is de overstock 500kg).

Voor de variabele "target level" maakte ik een ellenlang if expressie in de "control source"
Code:
=IIf([Categorie]="Slices A90/30";400;IIf([Categorie]="Slices A42/7";400;
IIf([Categorie]="couvercles frambois";100;IIf([Categorie]="Slices N50/40";400;
IIf([Categorie]="Organic Bio 42/7";1200;IIf([Categorie]="IQF Chevre au lard 15g";200;
IIf([Categorie]="IQF Chevre au lard 25gr";100;IIf([Categorie]="Slices A90/60";400;
IIf([Categorie]="Slices H42/20";400;IIf([Categorie]="Slices H42/7";400;
IIf([Categorie]="Slices N38/15";1200;IIf([Categorie]="Slices N38/20";400;IIf([Categorie]="Slices N42/15";1200;0)))))))))))))

Dit werkt maar het probleem is dat ik niet alle producten van een "target level" kan voorzien omdat na een tijd ik geen if expressie meer kan aanvullen omdat voor access de expressie te lang is.
Ik ga ervan uit dat dit misschien beter in vba geschreven kan worden, echter heb ik daar weinig ervaring mee.
 
Dit pak je niet aan door met de IIF funktie aan de slag te gaan maar door je targets in je (produkten) tabel te zetten.
Je management info zou ik nooit aanleveren via een rapport maar exporteren naar Excel.

Tardis
 
Die targets zijn enkel nuttig in verhouding met de totaal-gewichten van de producten. Mijn producten-tabel bevat aparte records van bv 5 keer product A of 3 keer product B telkens met verschillende gewichten. Het lijkt mij niet zinvol om voor elke record de target erbij te zetten in de tabel als deze enkel van toepassing is op de som van het geheel van de gewichten van het product.
 
Het is wel degelijk zinvol om je targets in een tabel vast te leggen en te relateren aan produkten.

Je reaktie kan ik niet volgen.
Een produkt zet je in een produktentabel, met daarbij 1 record per produkt.
Waar jij het over lijkt te hebben is een produktietabel en da's heel wat anders.
Kortom, gebruik een produktentabel en zet daar je targets in.

Tardis
 
Als je een oplossing wilt die de beperkingen van de IIF functie opheft, kun je eens kijken naar de SWITCH functie. Daarmee kun je, wat je nu met de IIF doet, tabelwaarden vervangen door een andere waarde. Dan hoef je verder ook niet te gaan programmeren.
 
Je snelheid winst wordt een stuk groter als je zoals Octafish voorstelt het switch statement gebruikt. Leesbaar en beter te onderhouden wordt het wanneer je zoals Tardis voorstelt een Category tabel aanmaakt en die joint met de andere tabellen. Als er een category bijkomt dan is die eenvoudig toe te voegen zonder je queries aan te passen.

Enjoy!
 
Ik ben de route van Tardis aan het nemen. Lijkt mij wel de meeste ideale manier, alleen is er wel wat werk aan voor mij omdat mij db slecht opgebouwd is en er een groot deel veranderingen moeten aan gebeuren.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan