Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Last in Query ne pokazuje dobar rezultat

[es] :: Access :: Last in Query ne pokazuje dobar rezultat

[ Pregleda: 1664 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

ombrs.do
Ristic Aleksandar
Administrator

Član broj: 170168
Poruke: 140
*.teol.net.



Profil

icon Last in Query ne pokazuje dobar rezultat03.12.2015. u 08:07 - pre 101 meseci
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
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.100.46-69.q9.net.



+79 Profil

icon Re: Last in Query ne pokazuje dobar rezultat03.12.2015. u 15:41 - pre 101 meseci
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

Prikačeni fajlovi
 
Odgovor na temu

ombrs.do
Ristic Aleksandar
Administrator

Član broj: 170168
Poruke: 140
62.68.110.*



Profil

icon Re: Last in Query ne pokazuje dobar rezultat03.12.2015. u 16:07 - pre 101 meseci
Hvala puno
brate u tudjini.
To je to
Hvalaaaaaaaaaaaaaaaaaaaaaaaa
 
Odgovor na temu

izonic
ishab zonic
Tuzla

Član broj: 38128
Poruke: 591
*.PPPoE-5945.sa.bih.net.ba.

Sajt: www.icentar.ba


+2 Profil

icon Re: Last in Query ne pokazuje dobar rezultat04.12.2015. u 10:40 - pre 101 meseci
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;
zxz
 
Odgovor na temu

[es] :: Access :: Last in Query ne pokazuje dobar rezultat

[ Pregleda: 1664 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.