Tvoj kveri nije dobro napisan:
Code:
SELECT Osnovna.Registracija, Osnovna.Datum, Osnovna.Poslovica, Sum(Osnovna.GorivL) AS SumOfGorivL
FROM Osnovna
GROUP BY Osnovna.Registracija, Osnovna.Datum, Osnovna.Poslovica, Forms!forma!Datum, Forms!forma!Datum1
HAVING (((Osnovna.Datum)>=[Forms]![forma]![Datum] And (Osnovna.Datum)<=[Forms]![forma]![Datum1])) OR (((Osnovna.Datum)<=[Forms]![forma]![Datum1]) AND (([Forms]![forma]![Datum]) Is Null)) OR ((([Forms]![forma]![Datum1]) Is Null));
Ovaj GROUP BY pocinje od registracije. Znaci sve ce biti grupisano prvo po registraciji (!) pa onda po datumu, pa onda po poslovnici, pa onda po datumima sa forme. Ovo bi moglo teorijski da radi ako bi neko vozilo (Registracija) sipala gorivo vise od jednog puta u jednom danu, sto je malo verovatno. To je jedan razlog zasto dobijas sve rekorde, nema nikakvog grupisanja. Takodje, Forms!forma!Datum, Forms!forma!Datum1 u GROUP BY sedi bez ikakvog razloga. Veoma je moguce da su ti sve vrednosti Osnovna.Datum u tabeli jedinstvene, zbog dela sa satima i minutima, pa i to dovodi do jedinstvenosti (vidi malo nize pricu o cuvanju datuma)
Tebi treba "Trebao bih da uradim sumu na koloni gorivo u L za određeni vremenski period. " Kveri koji odgovara na ovo igleda potpuno drugacije. Ovako nekako:
Code:
SELECT Osnovna.Poslovica, Osnovna.Registracija, Sum(Osnovna.GorivL) AS SumOfGorivL
FROM Osnovna
WHERE Osnovna.Datum BETWEEN <PocetniDatum> AND <KrajnjiDatum>
GROUP BY Osnovna.Poslovica, Osnovna.Registracija
Ovo ce ti dati po poslovnici i registraciji ukupnu kolicinu goriva u intervalu (<PocetniDatum>,<KrajnjiDatum>)
Mnogo jednostavnije, zar ne?
HAVING se ne koristi umesto WHERE, HAVING se koristi za poredjenje vrednsoti koje vracaju agregatne funkcije (SUM(), MAX(), MIN(), AVG() i slicno)
Paznja: Access datume cuva kao decimalne brojeve gde je ceo broj datum a decimalni deo je frakcija od 24 sata i presatvlja sate minute i sekunde u tom danu. Ako koristis funkciju Now() da ubacis datum u polje Osnovna.Datum, onda sve vrednosti imaju i decimalni deo.
Kad te decimalne datume poredis sa celim datumima (<PocetniDatum> ,<KrajnjiDatum>) moze se javiti ozbiljna greska. Na primer, neka su <PocetniDatum> = #12 Dec 2009# i krajnji datum = #12 Jan 2010#. Ako u bazi imas vrednost Osnovna.Datum = #12 Jan 2010 15:45# taj daum je veci od #12 Jan 2010#. Izraz BETWEEN <PocetniDatum> AND <KrajnjiDatum> NECE uhvatiti #12 Jan 2010 15:45# , jer #12 Jan 2010 15:45# je veci od #12 Jan 2010#. Takodje izraz Osnovna.Datum<= #12 Jan 2010#. ce promasiti Osnovna.Datum = #12 Jan 2010 15:45# iz istog razloga.
Sad citaj polako i nekoliko puta dok ne psotane jasno
:-)