Pa možeš na dva načina:
1. Tako da kad hočeš stanje na skladištu zbrojiš sve ulaze i odbiješ sve izlaze. Ovo je sporije (ovisi o količini prometa), ali neša problema sa storniranje dokumenata.
2. Kod svakog unosa ulaza ili izlaza za svaki artikal mijenjaš količinu.
Da se ne vrćan nazad na početak, na strukturu baze. Ja bih skladiše napravio ovako:
ID
SifAtrikla
Stanje
...
OstaloŠtoTrebaZaToSkladište
Kad knjižiš izlaz jednostavno za svaki artikal skineš stanje i obrnuto kod ulaza, za svaki artikal posebno. Ja bih to u trigeru jer nemaš s njim brige... googlaj, nije komplicirano, a baza ti sama uredi stanje.
Nije ti još kasno preći na FireBird bazu. Toplo preporučam. Besplatna je, a može se naći i free alata. Delphi ju podržava odlično.
Evo ti primjer. Kod mene je skladište LAGER, a ulaz (stavke) ROBNA:
Code:
CREATE OR ALTER TRIGGER AI_KEYROBNA FOR ROBNA
ACTIVE BEFORE INSERT POSITION 0
AS BEGIN
IF (NEW.KEYROBNA IS NULL) THEN
NEW.KEYROBNA = GEN_ID(GENKEYROBNA, 1);
update lager set kol_lag = kol_lag + new.ulaz_kol where sif_art_lager = new.sif_art;
END
- okida se kod upisa stavke u tablicu ulaza
- generira jedinstveni ID za tablicu ulaza
- dodaje količinu u tablisu skladišta