[ ombrs.do @ 03.12.2015. 08:07 ] @
Pozdrav
imam mali problem ali mi je veoma bitan.
Sifra 3850114216166 u query nabavna prosjek zadnja LastOfNabavnaF bi trebala da bude 19.55 a on pokazuje 22.87.
Moze li mi neko objasniti zasto.
Hvala unaprijed
[ Zidar @ 03.12.2015. 15:41 ] @
Funkcije LAST i FIRST ne treba upotrebljavati, jer su nedefinisane. ZNacenje LAST i FIRST je nedefinisano, ukoliko se na kaze po kom redosledu se sortitaju rekordi. Uglavnom ljudi zamisle da LST i FIRST znaci "poslednji uneseni rekord" ili "prvi uneseni rekord". Medjutim, to nije tacno, u opstem slucaju. Ovo znaci da nekada dobijete zeljeni rezultata (slucajno) a nekada ne (takodje slucajno). Post LAST i FIRST ne treba koristiti, treba nam nesto drugo.

Za ovakve slucajeve, treba jedan "medjukveri", izmedju [Nabavna prosjek1] i [Nabavna_prosjek_zadnja]. Potreban je query koji precizno izracunava "poslednji rekord", onako kako ste ga definisali u glavi, svesno ili nesvesno. U vasem slucaju, mozemo koristiti kolonu RB, koja je autonumber i koja bi trebalo da daje jedinstvene vrednosti (ako imamo UNIQUE index na njoj, inace nije garantovana jedinstvenost). Ja sam dodao unique index, PK na tu kolonu. Onda sam napravio "medjukveri", zove se [qryMaxOfRBzaSifru] i izgleda ovako;
Code:

SELECT [Nabavna prosjek1].Sifra, Max([Nabavna prosjek1].RB) AS MaxOfRB
FROM [Nabavna prosjek1]
GROUP BY [Nabavna prosjek1].Sifra;

Dobicemo tacno jedan rekord po sifri, i to onaj koji ima najveci RB, a to znaci poslednji je unesen.

Onda moramo da promenimo zavrsni kvari. J sam napisao moju verziju, [Nabavna_prosjek_zadnja_Z]
koji izgleda ovako:
Code:

SELECT [Nabavna prosjek1].Sifra, [Nabavna prosjek1].NabavnaF, [Nabavna prosjek1].NabavnaFsaPDV
FROM [Nabavna prosjek1] 
INNER JOIN qryMaxOfRBzaSifru ON 
         ([Nabavna prosjek1].RB = qryMaxOfRBzaSifru.MaxOfRB) AND ([Nabavna prosjek1].Sifra = qryMaxOfRBzaSifru.Sifra);


Kveri [Nabavna_prosjek_zadnja_Z] daje trazeni rezultat.

naravoucenije: zaboravite da funkcije LAST i FIRST uopste i postoje, jer su - nepredvidive. Ovde imate dobru diskusiju o FIRST/LAST i zasto ne radi ako se upotrebi u kveriju. https://bytes.com/topic/access...last-function-causing-problems
Takodje je opisano kako radi - ako se upotrebi urekordsetu, ali i to bi trebalo izbegavati.

Miscrosft ne kaze da se ne moze upotrebiti u kveriju, ali ne ne pokazuje primer kako bi se to uradilo u kveriju: https://msdn.microsoft.com/en-us/library/office/ff197381.aspx

[ ombrs.do @ 03.12.2015. 16:07 ] @
Hvala puno
brate u tudjini.
To je to
Hvalaaaaaaaaaaaaaaaaaaaaaaaa
[ izonic @ 04.12.2015. 10:40 ] @
Query Nabana Prosjek1

SELECT TOP 1 Ulaz.RB, Ulaz.[Nacin prodaje], Ulaz.Sifra, Ulaz.[Kolicina artikla], Ulaz.[Nabavna vrijednost po artiklu], Ulaz.[Rabat ulaza], Ulaz.Akciza, Ulaz.[Zavisni troskovi], Format((([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))*(IIf([Zavisni troskovi]=0,0,[Zavisni troskovi]/100)))+([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))+[Akciza],"0.0000") AS NabavnaF, Format(((([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))*(IIf([Zavisni troskovi]=0,0,[Zavisni troskovi]/100)))+([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))+[Akciza])*[Kolicina artikla],"0.0000") AS NabavnaF_Vrijednost, Format(Format((([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))*(IIf([Zavisni troskovi]=0,0,[Zavisni troskovi]/100)))+([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))+[Akciza],"0.0000")+(Format((([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))*(IIf([Zavisni troskovi]=0,0,[Zavisni troskovi]/100)))+([Nabavna vrijednost po artiklu]-([Nabavna vrijednost po artiklu]*[Rabat ulaza]/100))+[Akciza],"0.0000")*[PorezU]/100),"Fixed") AS NabavnaFsaPDV
FROM Ulaz
WHERE (((Ulaz.Sifra)="3850114216166"))
ORDER BY Ulaz.RB DESC;