[ interfood @ 31.03.2004. 14:52 ] @
U pokusaju da napravim nesto u Access-u dosao sam dotle da imam dve tabele.
U jednoj su sve unete robe na lager, a u drugoj sve robe koje su izdate sa lagera.
Nakon toga sam napravio dva upita koji racunaju koliko je ukupno svake robe izdato i uneto na lager.
Problem: Kad od upita "ukupno uneto na lager" oduzmem "ukupno skinuto sa lagera" dobijem NISTA. Verovatno jer nisu sve robe izlazile sa lagera tako da njihov unos ne postoji.

Nadam se da sam dovoljno jasno izneo moj problem.
Da napomenem da sam totalni pocetnik u ovome.
[ Zidar @ 31.03.2004. 19:46 ] @
Jedan od nacina da resis pitanje "stanja na lageru" je da napravis 3 tabele.

tblRobaGlavna (RobaID,Opis...), PK=(RobaID)
tblIzlazRobe (RobaID,IzlazID, Kolicina,Datum), PK=(IzlazID)
tblUlazRobe (RobaID,UlazID, Kolicina,Datum), PK=(UlazID)

(Nemoj sad da se javi neko i da ispravlja dizajn - da li trebaju posebne tabele za Ulaz/Izlaz ili ne, ovo je skolski primer)

Ti otprilike imas tabele za Ulaz i Izlaz. Dodaj tblRobaGlavna i budi siguran da u svim tabelama imas polje RobaID. U tabelama tblUlazRobe i tblIzlazRobe ne sme da se nalazi ni jedna RobaID koji nije definisan u tabeli tblRobaGlavna. Ovo mozes da obezbedis ako postavis relacije gde je tblRobaGlavna parent a tblUlaz itblIzlaz su children.

Da prikazes stanje na lageru trebaju ti sledeci kveriji:

qryRobaIzlazTotal
qryRobaUlazTotal
qryRobaStanjeNaLageru

qryRobaIzlazTotal => uradi GROUP BY po RobaID, SUM(Kolicina) AS SumaIzlaz
qryRobaUlazTotal => uradi GROUP BY po RobaiD, SUM(Kolicina) AS SumaUlaz

qryRobaStanjeNaLageru => treba ti LEFT OUTER JOIN na kverije qryRobaIzlazTotal i qryRobaUlazTotal, sa poljima
qryRobaStanjeNaLageru.RobaID, qryRobaStanjeNaLageru.Description,
qryRobaIzlazTotal.SumaIzlaz
qryRobaUlazTotal.SumaUlaz

Ako si prosao neki Access tutorial, ovo treba da je dovoljno. Ako nisi, prouci pa se javi.

Srecno,

:-)

[ narko @ 24.04.2006. 02:00 ] @
Ma kakve 3 tabele?! Napravis samo jednu tabelu sa poljima:
-sifra robe
-naziv robe
-Ulaz
-Izlaz
-stanje na lageru =([ulaz]-[izlaz])
i to ti je cela komplikacija.Laksi nacin NE POSTOJI!!!
[ tacka @ 24.04.2006. 19:07 ] @
ja sam to resio tako sto sam pored ovih tabela napravio i tbl_lager.
sa kolonama
SifID - sifra dokumenta po kojem nasatupa promena u lager listi (prijemnica, int. ulaz, int. izlaz itd.)
DokID - broj dokumenta po kojem nasatupa promena u lager listi
KolUlaz - kolicinski ulaz
KolIzlaz - kolicinski izlaz
FinUlaz - finansijski ulaz
FinIzlaz - finansijski izlaz
RobaID - id robe
MagID - id magacina
DatDok -datum dokumenta
Promene se upisuju u tabelu pri knjizenju bilo ulaznih ili izlaznih dokumenata.
[ narko @ 24.04.2006. 20:51 ] @
Moze i tako!
[ laponac84 @ 11.07.2006. 09:01 ] @
Ljudi, jeste da sam nov, ali mislim da je samo Narko bio blizu, zasto to ne uradite ovako
Pored stadardnih polja, sifra ... u tabelu stavite polja, npr:
...
Stanje
Izlaz
...

i sad ide mala cak prilikom unosa podataka u formu:

1. Za ulaz robe koristite samo polje stanje

2. Za izlaz koristite oba:
Promene unosite u polje izlaz,
a kao dodatak stavite da je stanje jednako apsolutnoj vrednosti Izlaza
(Ako je izlaz = 3, onda je stanje = -3)


Stanje ce te dobiti kada napravite Queri tako sto ga grupisete po proizvodima i stavite da sumira Stanje,

KOD MENE TAKO RADI.


[ chachka @ 11.07.2006. 14:49 ] @
Citat:
Zidar: (Nemoj sad da se javi neko i da ispravlja dizajn - da li trebaju posebne tabele za Ulaz/Izlaz ili ne, ovo je skolski primer)


Ipak su se javili

-----
Djordje Balasevic - Panonski Mornar
"Ovo je prica i za suze i za smeh"
[ goranvuc @ 11.07.2006. 15:58 ] @
Citat:
interfood:
Problem: Kad od upita "ukupno uneto na lager" oduzmem "ukupno skinuto sa lagera" dobijem NISTA.


Dakle, to je bio problem. Umesto sto ste se zdusno bavili savetima vezanim za projektovanje, niko nije pomogao coveku i resio mu problem. Meni se cini da si ga i sam dobro shvatio
Citat:
interfood:Verovatno jer nisu sve robe izlazile sa lagera tako da njihov unos ne postoji.


To je zato sto Access kada oduzima ili dodaje nesto sto je NULL (Izlazi robe koja nije izlazila, npr.) ceo izraz dobija vrednost NULL, tj. 5 + null = null; 400 - null = null...
Cela caka je u tome da obezbedis 0 tamo gde je null da bi mogao da vrsis aritmeticke operacije, a jedna od varijanti je:

Code:

SELECT Roba.Sifra, TUlaz.Kolicina AS Ulaz, TIzlaz.Kolicina AS Izlaz, 
IIF(ISNULL(TUlaz.Kolicina), 0, TUlaz.Kolicina) - IIF(ISNULL(TIzlaz.Kolicina), 0, TIzlaz.Kolicina) AS Stanje 
FROM Roba 
LEFT JOIN TUlaz ON Roba.Sifra = TUlaz.Sifra 
LEFT JOIN TIzlaz ON Roba.Sifra = TIzlaz.Sifra


Naravno, ovo je primer, nisi naveo kako ti se zovu tabele, ali si objasnio sledece
Citat:
interfood: U pokusaju da napravim nesto u Access-u dosao sam dotle da imam dve tabele.
U jednoj su sve unete robe na lager, a u drugoj sve robe koje su izdate sa lagera.
Nakon toga sam napravio dva upita koji racunaju koliko je ukupno svake robe izdato i uneto na lager.

pa sam ti dao SQL koji je u skladu sa postavkom.

Pozdrav!

Hahaha!

Sad sam tek video datum poruke, @narko - iz koje mracne proslosti i sa kojim razlogom si iskopao ovaj topic?

:>)
[ laponac84 @ 11.07.2006. 20:44 ] @
E ljudi, prvi dan sam na forumu, a već napravio zbrku,

sad sam i ja video datume

odreagovao sam povucen narkovim rešenjem.