@Darkog: Za podatke koje si dao, do istog rezulata koji je izracunao Chacka moze se doci i na jednostavniji nacin.
Zakacio sam fajl sa svim potrebnim kverijima. Ukljucen je i kveri koji jke dao Chachka.
Meni se cini logicnim ono sto Goran tvrdi - dnevni predjeni kilometri = [poslednje citanje] - [prvo citanje]
Problem je sto pamtis samo 3 cifre, pa prvo citanje bude 900 a sledece bude 39. Kako oduzeti 900 od 39 - pa pomocu kompjutera.
Ja sam napravio dva kverija. Prvi kveri se zove 'Z_Pocetak' i resava problem tri cifre, a glasi ovako:
Code:
SELECT tblObilasci.date, tblObilasci.EMPLID, tblObilasci.Num, IIf(CInt([Km])<100,1000+CInt([km]),CInt([km])) AS StanjeKM
FROM tblObilasci
ORDER BY tblObilasci.date, tblObilasci.EMPLID, tblObilasci.Num;
Mozda IIf koji obracunava cifre treba drugacije odraditi, ovo moje je prilicno klimavo, ali za podatke koje si dao radi. Problem bi se resio sam od sebe kad bi uzimao sve cifre sa brojaca kilomatara. Ovako, neke mumbo-jumbo formule su potrebne da se resi problem.
Zavrsni kveri je 'Z_Kraj' i glasi ovako (kao sto je i Goran napisao):
Code:
SELECT Z_Pocetak.date, Z_Pocetak.EMPLID, Max(Z_Pocetak.StanjeKM) AS MaxOfStanjeKM, Min(Z_Pocetak.StanjeKM) AS MinOfStanjeKM, Max([StanjeKM])-Min([StanjeKm]) AS PredjeniKilometri
FROM Z_Pocetak
GROUP BY Z_Pocetak.date, Z_Pocetak.EMPLID;
Ovo je Goranov kveri. Ono sto Goran nije znao (jer mu nisi rekao) u momentu kad je pravio kveri je da cuvas samo tri cifre, pa bi njegov kveri davao pogresne rezultate.
SItem kverija koji sam predlozio daje iste rezultate kao kveri koji je postavio Chachka (provereno red po red i rucno). Zasto? Zato sto su podaci koje si dao takvi da vozilo nije bilo korisceno ni za sta drugo osim za obilaske kupaca. Znaci tacno jedan vozac svakog dana, i pravi samo obilazske kupaca i nikakve druge voznje. Ako je ovo ispunjeno uvek, onda dva kverija koje sam dao zavrsavaju posao. Ako vozilo koristi vise vozaca i ima putovanja koja se ne racunaju, onda moje resenje (i Goranovo) nece biti dobro.
Medjutim, primer obracuna koji is ti dao glasi (citirano iz tvoje poruke):
Citat:
Do minhena napravim 10 stajanja: Prvo stajanje - lokacija 1 (kilometraza L1km), drugo stajanje - lokacija 2 (L2km), trece - lokacija 3 (L3km),... deseto - Lokacija Minhen (L10km).
Malo pisnja i dobijamo:
Put = (Pocetak-L1) + (L2-L1) + (L3-L2) + (L4-L3) + (L5-L4)+...+(L8-L7)+(L9-L8) + (L10-L9) + (Kraj - L10)
U ovom izrazu (koji si ti dao, nisam ja izmislio nista) svi sabirci osim Pocatik i Kraj se javljaju dva puta, jednom pozitivni, jednom negativni, kad se oslobodimo zagrada oni se svi poniste i ostaje samo:
Put = Kraj - Pocetak,
to jest ono sto ti je Goran rekao na pocetku.
@Chachka: Ne znam zasto bi se sabiralo (a2-a1) + (a4-a3) + (a6-a5)....
Sta se desilo sa (a3-a2) i zasto to ne bi uslo u racun? Mi uporno pitamo ima li deonica koje se ne racunaju, i Darkog nam uporno ne odogovara, a svi primeri kojje je dao ukazuju na situaciju 'jedan covek uzme auto i obilazi kupce ceo dan i na kraju vrati auto u garazi, zapise kilometrazu i tu je kraj price'. Dakle, nema razloga da se ne uzme u obzir (a3-a2). Sve dok nam Darkog ne kaze drugacije.
Meni pre lici da se ovde radi o bukvalnom prevodjenju papirnog obrasca na racunar. Na papiru, svako je posle svakog obilaska izracunavao kilometrazu izmedju dve tacke pa na kraju to sabirao. Cak i na papiru je jednostavnije oduzeti pocetnu kilometrazu od zavrsne. Deluje mi da je pesacki postupak na papiru bio nepotrebno komplikovan, pa i kompjutersko resenje koje bukvalno prevodi papirni postupak, ne moze mnogo pametnije. Usput, zasto bi se kilometri cuvali kao tekst a ne kao recimo integer?
:-)