Pitanje je na mestu i resenje postoji. Evo kako moze da se resi:
Nemam vremea da gledam dizajn baze ali pretpostavljam da imas dve tabele, Zaglavlje i Stavke. Broj stavki je razlicit od narudzbe do narudzbe. A na izlazu treba pokazati 30 redova, praznih ili punih. Pretpostavljam da stavkama mozes nakekao da dodelis RedniBrojStavke, i da je to rastuci neprekidni niz. Ako imas 5 stavki, one su numerisane sa 1,2,3,4,5; za 3 stavke bice 1,2,3. Ako i nemas, moze da se postigne u kveriju. Glavno pitanje je kako obezbediti ostatak brojeva. Evo ovako:
Napravis jednu tabelu koja se zove Brojevi i ima jednu kolonu Broj. U tabelu Brojevi, kolona Broj uneses 30 redova, pogadjas vec - brojevi od 1 do 30.
Sada, mozes da napravis ovakav kveri:
Code:
qryNarudzbe_Dekart:
SELECT N.BrojNardudzbe, B.Broj
FROM Narudzbe AS N, Brojevvi AS B
WHERE B.Broj<=30 ---- ovo za slucaj da imas vise brojeva u tabeli Brojevi :-)
Ovo se zove Dekartov proizvod skupova Narudzbe x Brojevi i rezultat je 30 redova za svaku narudzbu. Izlazni set podataka izgleda ovako nekako, posle sortiranja:
Code:
BrojNarudzbe Broj
1 1
1 2
1 3
.
.
1 29
1 30
2 1
2 2
2 3
.
.
2 30
Kad imas ovaj qryNarudzbe_Dekart, ti imas sve brojeve koji ti trebaju za izvestaj. Posto Stavke takodje sadrze nekakve redne brojevee, onda se moze napisati ovo:
Code:
SELECT
D.BrojNarudzbe
, D.Broj
, S.ArtiklID
, S.Kolicina
, S.Cena
FROM qryNarudzbe_Dekart AS D
LEFT JOIN STavke AS S
ON D.BrojNarudzbe = S.BrojNarudzbe
AND D.Broj = S.BrojStavke
Za sve B.Broj za koji ne postoji iodgovarajuci red u tabeli STavke, sve kolone koje s epovlace iz tabele Stavke imace NULL vrednosti i nece se pojaviti na reportu. Posto je ovo LEFT JOIN, prikazace se SVI redovi iz qryNarudzbe_Dekart, upravo ono sto tebi treba.
Kveriji su napisani u standardnoj ANSI SQL sintaksi, tako da Cut/Paste mozda ne radi. Medjutim, ideja je bitna: nezavisna tabela Brojevi, pa dekartov proizvod sa tabelom NArudzbe i onda LEFT JOIN izmedju dekartovog proizvoda i tabele Stavke.
Mislim da sad mozes da nastavis.
:-)