Predmet:Re: Problem Petlja
steta sto nemamo neke podatke u bazi pa bi mogli malo isprobavati, al' cini mi se da je problem u petlji jer:
do 4.5.2016 radi korektno a onda samo "listira" a ne zbroji (sumira), tj. svaki dan zbroji.
problem bi bio u funkciji: Public Function taxaOddo()
u ovom dijelu koda:
PreuzmiIzvorni kôd (Text):Print #1, "----------------------------------------"
rst.MoveFirst
Do Until rst.EOF
Suma = Suma + rst!SumOfiznos
rst.MoveNext
Loop
rst.MoveFirst
cini mi se, a nisam bas siguran jer nisam neki strucnjak, da ti je EOF na kraju i nema podataka t.j. next, bar ja tako mislim
EOF se zalaže za kraj datoteke - u slučaju baze podataka recordsets to znači da si na posljednjrm zapisu (ako pokuÅ¡aÅ¡ napraviti Recordset.MoveNext dobit čeÅ¡ greÅ¡ku, jer ne postoji zapis nakon Å¡to je ovaj jedan). ImaÅ¡ li kakvu greÅ¡ku?
BOF označava početak datoteke - u slučaju baze podataka recordsets to znači da si na prvom slogu (ako pokuÅ¡aÅ¡ napraviti Recordset.MovePrevious dobiti čeÅ¡ greÅ¡ku, jer ne postoji zapis prije ovoga)
ImeDatoteke.Recordset.MoveNext
If ImeDatoteke.Recordset.EOF = True Then
ImeDatoteke.Recordset.MoveLast
ImeDatoteke.Recordset.MovePrevious
If ImeDatoteke.Recordset.BOF = True Then
ImeDatoteke.Recordset.MoveFirst
ja bi stavio MsgBox da mi ispise podatak svaki puta i Breakpoint da se zaustavi, pa bi za F8 (cini mi se da je ta tipka) izvrtio funkciju do ponovo breakpointa i u msgboxu bi mi bio drugi podatak.
PreuzmiIzvorni kôd (Text):Dim strSQL As String
Dim rs As DAO.Recordset
strSQL = "KORISNIK"
strSQL="
SELECT * from Qzaperiod1
WHERE datum
BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')
"
Set rs = CurrentDb.OpenRecordset(strSQL)
WITH rs
IF NOT .BOF AND NOT .EOF Then 'provjerimo dali uopce ima podataka u bazi
'dobro je pomaknuti se na kraj baze pa onda opet na pocetak
'nije neophodno ali ponekad zna pomoci
.MoveLast
.MoveFirst
WHILE (Not .EOF)
'WHILE LOOP petlja u kojoj kada dodemo do kraja baze (EOF)izlazimo iz petlje
Debug.Print rs.Fields("imeKolone1") & " " & rs.Fields("imeKolone2")
' mozes podatke umjesto u msgbox ispisivati u debug (immediate window)
.MoveNext
'petlja nastavlja dalje i ispisuje u immedia prozoru, mozemo zaustaviti sa break point ili CTRL+Break
WEND
END IF
.close
END WITH
zakljucak:
nakon sto izlista za 5.5.2016 nemoze zbrojiti za taj dan jer je EOF na kraju i onda ti se ne "izvrti" onaj dio za sumu, jer nema nista (nema podatak jer si na kraju).
ali to je samo moje onako logicko razmisljanje pa mislim da treba pricekati strucnjake da ti pogledaju to
zivot je moja domovina.
Ovaj post je ureden
5
puta. Posljednja izmjena 26.05.2016 14:27 od strane Avko.