Evo dokaz za moju tvrdnju da ono sto korisnik hoce nije uvek jednako onome sto korisnik kaze.
Cyberghost kaze:
Citat:
Ako na pocetku imam 1000 komada neke robe kako da proracunavam svaki put
kada izdam otpremnicu to mi nije jasno. Problem je jako prost trazi se samo
da se izda otpremnica sa nazivom robe kolicinom i cenom, i jos jedna stvar
da se na najlaksi moguci nacin umanji kolicina na lageru, da kad kazem
cokolada da mi izbaci trenutno stanje cokolade u magacinu.
Ukupno dve recenice. Prva kaze:
Citat:
Ako na pocetku imam 1000 komada neke robe kako da proracunavam svaki put
kada izdam otpremnicu to mi nije jasno.
Neiskusan developer razume ovo kao: napravi mi kod koji ce da vrsi izracunavanje za mene.
medjutim, u drugoj recenici Cyberghost kaze:
Citat:
Problem je jako prost trazi se samo
da se izda otpremnica sa nazivom robe kolicinom i cenom, i jos jedna stvar
da se na najlaksi moguci nacin umanji kolicina na lageru, da kad kazem
cokolada da mi izbaci trenutno stanje cokolade u magacinu
Ovo mozemo da razbijemo na dva dela:
1) "trazi se samo
da se izda otpremnica sa nazivom robe kolicinom i cenom"
i
2) "da kad kazem
cokolada da mi izbaci trenutno stanje cokolade u magacinu"
Ljudski mozak cuje prvu polovinu iskaza i ostatak i ne cuje uglavnom, pa se veoma vazan drugi deo korisnikovog zahteva propusti.
Iskusan developer bi ovako postupio:
1) napravi se da ne cujes prvu recenicu "kako da proracunavam svaki put
kada izdam otpremnicu"
2) napravi tabele
tblRoba (ArtiklID,opis, trenutna cena)
tblPromet (ArtiklID,OtpremnicaID, VrstaTransakcije, Kolicina, CenaNaTransakciji)
VrstaTransakcije moze da ima dve vrednosti "U" (ulaz) i "I" (izlaz).
tblOtpremnice (OtpremnicaID,Datum,KupacID)
tblKupci (KupacID,Ime....)
Za unos otpremnice napravi se Forma/subforma, Forma (rs=tblOtpremnice), subforma rs=tblPromet i dalje znas (?)
Napravis report koji za zadati OtpremnicaID ispsiuje sve sto treba. I ovo znas (?)
3) E sad ono glavno: Kveriji koji sumiraju ulaze i izlaze, i jedan koji to sve prikaze i izracuna Stanje
[code]
qrySumaUlaza:
SELECT ArtiklID, SUM(Kolicina) AS Ulaz
FROM tblPromet
WHERE VrstaTransakcije='U'
GROUP BY ArtiklID
qrySumaIzlaza:
SELECT ArtiklID, SUM(Kolicina) AS Izlaz
FROM tblPromet
WHERE VrstaTransakcije='I'
GROUP BY ArtiklID
qryStanje:
SELECT A.ArtiklID, A.Opis, U.Ulaz, I.Izlaz, U.Ulaz-I.Izlaz AS Stanje
FROM tblRoba AS A
LEFT JOIN qrySumaUlaza AS U ON A.ArtiklID=U.ArtiklID
LEFT JOIN qrySumaIzlaza AS I ON A.ArtiklID=I.ArtiklID
[code]
--- Pazi: ovo je MS SQL sintaksa za LEFT JOIN, u Accessu je malo drugacije. Uglavnom, treba ti LEFT JOIN sa tblRoba na oba kverija.
Onda, kad god naidje pitanje
Citat:
da kad kazem
cokolada da mi izbaci trenutno stanje cokolade u magacinu
, ti samo pozoves qryStanje:
SELECT * FROM qryStanje WHERE ArtiklID='Cokolad ID'
Tvoja aplikacija moze da ima i jednu datasheet formu, koja se bazira na qryStanje i kome god treba, moze do mile volje da je pretrazuje i vid stanje svih artikala u svakom momentu.
Ako ti treba da prilikom unosaodmah vidis promenu stanja, uradi ovako:
- dodaj unbound kontrolu na formu ili subformu(onu na kojoj zaista unosi rekor u tblPromet) i stavi joj ovu formulu za Data Source:
=Dlookup("Stanje","qryStanje","ArtiklID=" & Form!ArtiklID)
Ako se ne prikaze stanje odmah po unosu, mozda ti treba Refresh ili Recalc, koje onda treba da dodas na formin/subformin AfterUpdate event. Nikako na On Enter ili LostFocus za neko polje. Tek kad se transakcija (unos rekorda) izvrsi, odna prikazi promenu. Eto, ovim si resio i ono prvo pitanje
Citat:
Ako na pocetku imam 1000 komada neke robe kako da proracunavam svaki put
kada izdam otpremnicu to mi nije jasno.
Sa kverijima, cak i ako nema snikakav kod sve ce lepo da radi. Ako rucno uneses direktno u tabelu tblPromet bilo kakve promene, kveriji ce to lepo da uhvate i prikazu. Menjas kolicine? No problem, kveriju je svejedno, kveri cita sta trenutno vidi u tabeli.
Nadam se da je ovo pomoglo.
:-)