Ponovo je greska u semi
Imas dve tabele za fakture, [Ulazne Fakture] i [Izlazne Fakture]. Ocigledno je da on dele jednu istu tabelu za stavke na fakturi. Tu tabelu si nazvao [Stanje Proizvoda]. Fakture i Stavke na fakturi su u relaciji 1:vise, za jednu fakturu ima vise stavki. Iz ovoga sledi da za moras da razdvojis stavke. Ne mogu dve tabele [Ulazne Fakture] i [Izlazne Fakture] da dele jednu istu tabelu sa stavkama. To mozes da razresis na dva nacina:
1) da razbijes stavke na dve tabele i da radis sa dva para tabela Faktura : Stavke = 1: vise
2) da sastavis ulazne i izlazne fakture u jednu tabelu i da dodas polje TipFakture ('ulaz','izlaz')
Drugi problem je izbor Primarnog kljuca: Ovo je primarni ključ = “Iz-f ”+”Rb Fakture ” + ”Datum”
Kako ces na primer da pretrazujes tvoje fakture po datumu? Ako imas posebno polje za Datum, ne treba da ga trpas u PK. Ako nemas posebno polje za Datum, neces moci da koristis datume, sto nije dobro. Konstanta “Iz-f ” ti ne znaci nista, posto je ista za svaki rekord.
Ako razbijes tvoj PK na komponente, imaces polja ovako:
Tabel fakture:
---------------------------------
1. TipFakture ("iz-f","ul-f")
2. RB_Fakture, Long Integer
3. Datum, dateTime
4. SifraKupcaIliDobavljaca
Onda ces da kazes da je PK ili RB_Fakture, ili (TipFakture,RB_fakture). Opcija sa (TipFakture,RB_fakture) mi deluje bolje, jer ce ti dozvoliti da numerises ulazne fakture od 1 do N, i izlazne fakture od 1 do N. Naravno da mozes da ukljucis i datum u PK, u tom slucaju mozes da numerises fakture,ulazne i izlazne zasebno, od 1 do N u okviru godine. Ovo zahteva pisanje koda koji ce da izracune RB po pravilu koje usvojis.
Kad sve ovo ispricasmo o PK, ispade da ces imati nacin 2) za razresenje. Moze i drugacije, ali cini mi se da si blizi spajanju dve tabele sa fakturama u jednu.
U tom slucaju bi tabela sa stavkama izgledala recimo ovako:
Tabela Stavke_na_Fakturi:
--------------------------------
1. TipFakture ("iz-f","ul-f")
2. RB_Fakture, Long Integer
3. Datum
4. SifraProizvoda
5. Kolicina
Prva tri polja su PK iz tabele Fakture. Kolicina >=0
Onda dobijes Stanje kao jedan pogled u tvoje podatke, nekako ovako:
qryULAZ:
SELECT SifraProizvoda, SUM (Kolicina) AS Ulaz
FROM Stavke_na_Fakturi
WHERE TipFakture = "iz-f"
ROUP BY SifraProizvoda
qryIZLAZ:
SELECT SifraProizvoda, SUM (Kolicina) AS Izlaz
FROM Stavke_na_Fakturi
WHERE TipFakture = "ul-f"
ROUP BY SifraProizvoda
qryStanje:
SELECT U.SifraProizvoda, U.Ulaz, I.Izlaz
FROM qryULAZ AS U
JOIN qryIzlaz AS I ON U.sifraProizvoda = I.SifraProizvoda
Naravno, treba videti sta sa slucajevima kad imamo Ulaz i ni jedna izlaz, pa je I.Izlaz = NULL (to je vec neko objasnio prethodnih dana)
Mislim da sam ti i ja neki zemljak. Moja baba po ocu je iz Lapova, od familije Jocic
Pozdarav