Zidar Canada
Moderator Član broj: 15387 Poruke: 3085 *.eqao.com.
|
Tvoj program "Kasa" verovatno ima tabelu tblProdatiArtikli (RacunID,ArtiklID,ProdataKolicina), gde se belezi sve sto prodje kroz kasu. Mozes da za potrebe magacina napravis jos jednu tabelu, tblUlazRobe i tu upisujes (ArtiklId,DatumUlaza,KolicinaRobeKojaJeUslaUmagacin). Sada imas u tabeli tblUlazRobe sve sto je uslo u magacin i u tblProdatiArtikli sve sto je izaslo.
Ako uradis sumiranje Kolicina po ArtiklID u obe tabele (nikakav WHERE, sumiras kolicine GROUP BY ArtiklID), dobices dva kverija, qryUkupanUlazPoArtiklima i qryUkupanIzlazPoArtiklima. Razlika sumiranih polja iz ova dva kverija za isti artikl daje ti trenutnu kolicinu u magacinu. Znaci, imas tri kverija:
qryUkupanIzlazPoArtiklima:
SELECT ArtiklID, SUM(KolicinaRobeKojaJeUslaUmagacin) AS UlazUkupno
FROM tblUlazRobe
qryUkupanIzlazPoArtiklima:
SELECT ARtiklID,SUM(ProdataKolicina) AS IzlazUkupno
FROM tblProdatiArtikli
qryStanjeNaLageru:
SELECT U.ArtiklID, U.UlazUkupno-I.IzlazUkupno AS StanjeNaLageru
FROM qryUkupanIzlazPoArtiklima AS U
INNER JOIN qryUkupanIzlazPoArtiklima AS I ON U.ArtiklID=I.ArtiklID
Pretpostavljam da imas negde i tabelu tblArtikli, gde je savki artikl izlistan tacno jednom, na primer (ArtiklID,Opis,Proizvodjac,Itd_Itd,MinimalnaDozvoljenaKolicina)
Sad uradis ovo:
qryArtikliKojeTrebaNaruciti:
SELECT A.ArtiklID, A.Opis,A.Proizvodjac,A.MinimalnaDozvoljenaKolicina,
S.StanjeNaLageru
FROM tblArtikli AS A
INNER JOIN qryStanjeNaLageru AS S ON S.ArtiklID=A.ArtiklID
WHERE S.StanjeNaLageru<=A.MinimalnaDozvoljenaKolicina
Kveri qryArtikliKojeTrebaNaruciti mozes da izvrsis kad god hoces i dobices odgovor na svoje pitanje. Pretpostavlja se da ce kolicina na lageru uvek biti veca ili jednaka od nule - ne mozes da prodas nesto sto niej trenutno u radnji. Na lageru = u magacinu plus ono sto je u samoj radnji na rafovima = sve sto do sada nije prodato. Ako budes marljivo unosio sve ulaze u bazu, i bukvalno sve bude islo kroz kasu, rezultat kverija qryStanjeNaLageru bice jednak stvarnom stanju. U realnom zivotu, to nikad nece biti 100% tako, uvek ce postojati neka sitna razlika izmedju inventarisanog stanja i onoga sto kompjuter kaze. Ovo zbog toga sto se ponesto iznese iz radnje a da ne prodje kroz kasu, pa izlaz nije evidentiran. Neki put ce ti promaci da uneses ulaz. Neki put, pri brojanju se nece bas sve tacno prebrojati, ljudskom greskom ili zato sto je artikl premesten i zaturen negde u radnji.
Srecno
:-)
|