Centar za edukaciju-BiH



#1 24.05.2016 12:37
nevsad Van mreze
Clan
Registrovan od:01.09.2010
Postovi:228


Predmet:Problem Petlja
SVE IZVJESTAJE POZIVAM IZ FRMNEFISKALNI

U IZVJESTAJU TAXA TREBAO BIH IMATI

04.05.2016 56 RadnaTaksa 14.00
04.05.2016 56erad.txt e_recept 22.00
...
04.05.2016 36.00 itd

Prilozi:
Informacije o tipu datoteke za:rar  temp.rar
Preuzimanja:296
Velicina datoteke:51.08 KB
Informacije o tipu datoteke za:rar  temp.rar
Preuzimanja:297
Velicina datoteke:51.08 KB

↑  ↓

#2 25.05.2016 20:59
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Problem Petlja
Imas ti u toj proceduri mnostvo memorijskih koje nisu definisane.
Kao prvokada imas ovako kompleksne procedure trebalo bi na pocetku modula
Option explicit
Ako ovoga nema onda se izgubis u memorijskim.
Print #1, strParPrint
Print #1, strIzbTrake
Print #1, strObSlova

Sve ove memorijske su prazne a nisu ni dimenzionisane kao globalne ako se negjde u drugoj proceduri kupe podaci.

Mozes napisati sta zelis i odakle dobiti pa da naprvimo novu proceduru ili pak da razmotrimo ovu pa da vidimo sta se odakle cita da ne lutamo.

Ako je to ova procedura a mislim da jeste:
Public Function taxaOddo()
Dim rst As DAO.Recordset
IzborPrintera
br = 1
izn = 0
siznos = 0
Suma = 0
Set rst = CurrentDb.OpenRecordset("KORISNIK")
'Open rst!Port For Output As #1
Open "C:\Temp\taxa.txt" For Output As #1
Print #1, strParPrint
Print #1, strIzbTrake
Print #1, strObSlova
Print #1, Tab(21 - Len(rst!korisnik)); rst!korisnik
Print #1, Tab(21 - Len(rst!adresa) - Len(rst!grad)); Nz(rst!adresa, ""); ","; Nz(rst!grad)
Print #1, "Izvjestaj o prodatim artiklima za period"
Print #1, Tab(7); "od"; Tab(10); Format(pocetni, "dd.mm.yyyy"); Tab(22); "do"; Tab(25); Format(krajnji, "dd.mm.yyyy")
Print #1, "========================================"
Print #1, " Datum Taxa Iznos"
Print #1, "========================================"
rst.Close

+________________________________________________
IzborPrintera- Poziv procedure izbor printera
sada ide
br = 1
izn = 0
siznos = 0
Suma = 0

Znaci dodjeljuju se vrijednosti memorijskim i jos nista ne ide na stampu.
Open "C:\Temp\taxa.txt" For Output As #1- Otvaramo txt datoteku i u nju u tri reda trebalo bi unijeti podatke iz tri memorijske ispod
ali one su Empty nisu uneseni podaci u njih kao u predhopdnim gore br, izn, itd.
Znaci ove su prazne pa ce i biti tri reda prazno
Print #1, strParPrint
Print #1, strIzbTrake
Print #1, strObSlova

dalje
Print #1, Tab(21 - Len(rst!korisnik)); rst!korisnik - e sad u novom redu prvo tab i to 19-Duzina imena korisnika=2
Print #1, Tab(21 - Len(rst!adresa) - Len(rst!grad)); Nz(rst!adresa, ""); ","; Nz(rst!grad)- tab isti obracun kao gore te adresa i grad
Print #1, "Izvjestaj o prodatim artiklima za period"- Obican tekst u novom redu
Print #1, Tab(7); "od"; Tab(10); Format(pocetni, "dd.mm.yyyy"); Tab(22); "do"; Tab(25); Format(krajnji, "dd.mm.yyyy")
E sad ovdje zapinje.
Imas opet tab i on je ok ali imas memorijsku pocetni koja je prazna kao i one gore i krajnj koja je takodjje prazna.

Ako mislis na ove datume onda mora na vrhu modula dimenzionisati globalne variable pocetni i krajnji.
Global pocetni As Date
Global krajni As Date

eto ako je to to sto si htio.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#3 26.05.2016 08:06
nevsad Van mreze
Clan
Registrovan od:01.09.2010
Postovi:228


Predmet:Re: Problem Petlja
vjerojatno sam bio nejasan...

ovdje su definirane,u jednom drugom modelu:

Option Compare Database
Option Explicit
Public PintFlag As Integer
Public Ppartner, psifradoc, Pkonto As String
Public Pproizvod As String
Public PBFR As Long
Public Psifra As String
Public Pprinter As String
Public Pkolicina As String
Public strSQL As String
Public pocetni
Public krajnji
Public zadan
Public Pjmbg As String
Public strPay, strRok, strKup As String
Public strFioka As String
Public strDebSlova, strObSlova, strRezi, strPomjeri, strParPrint, strP, strIzbTrake As String
Public strRadnik As String
Public strSmjena As String
Public rab As Double
Public Dalje As Boolean
Public ResetBr As Boolean
Public strReset As String
Public strmasno As String
Public strduplo, VELIKO, MALO, MASNO, NEMASNO, DUPLO, NORMALNO As String
'veliko = Chr(27) & " " + Chr(1) + Chr(27) & "w" + Chr(1)
'malo = Chr(27) & "W" + Chr(0) + Chr(27) & "w" + Chr(0)
'masno = Chr(27) & "E"
'nemasno = Chr(27) & "F"
'duplo = Chr(27) & ""
'normalno = Chr(27) & "H"
'/////////////////////////

kada idem dalje...
sve pozivam iz Qzaperiod1
Set rst = CurrentDb.OpenRecordset("select * from Qzaperiod1 WHERE datum BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')")
rst.MoveFirst
Datum = rst!Datum
Do Until rst.EOF
sif = rst!proizvod
im = rst!ime
izn = rst!SumOfiznos
Print #1, Format(rst!Datum, "dd.mm.yyyy"); " "; sif; Tab(16); right(im, 24); Tab(41 - Len(Format(izn, "###0.00"))); Format(izn, "###0.00")
' siznos = siznos + rst!SumOfiznos
rst.MoveNext
Loop
Print #1, "----------------------------------------"

i dobijem...
04.05.2016 56 RadnaTaksa 14.00
04.05.2016 56erad.txt e_recept 22.00
05.05.2016 55 participacija 2.00
05.05.2016 56 RadnaTaksa 8.00
05.05.2016 56erad.txt e_recept 34.00
06.05.2016 56 RadnaTaksa 11.00
06.05.2016 56erad.txt e_recept 47.00

i sve se odigra dobro u smislu da za svaki datum donese obe vrste takse.

i sad je problem npr poslije 04.05.2016 trebalo bi obe vrste sabrati pa da
bude 04.05.2016 ukupno 36, ja sam to napravio ovako

Print #1, "----------------------------------------"
Set rst = CurrentDb.OpenRecordset("select * from Qzaperiod2 WHERE datum BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')")
izn = 0
Suma = 0
rst.MoveFirst
Datum = rst!Datum
Do Until rst.EOF
izn = rst!SumOfiznos
Print #1, Format(rst!Datum, "dd.mm.yyyy"); Tab(41 - Len(Format(izn, "###0.00"))); Format(izn, "###0.00")
rst.MoveNext
Loop
Print #1, "----------------------------------------"
rst.MoveFirst
Do Until rst.EOF
Suma = Suma + rst!SumOfiznos
rst.MoveNext
Loop
rst.MoveFirst
Print #1, "SVEUKUPNO : "; Tab(41 - Len(Format(Suma, "####0.00"))); Format(Suma, "####0.00"); " KM"
Print #1, "----------------------------------------"
Print #1, Chr(27) & Chr(100) & Chr(8)
Print #1, Chr(27) & Chr(105)
Close #1

...
i narvano to nije ono sto ja hocu

zaptravo imam dva niza
prvi
04.05.2016 56 RadnaTaksa 14.00
04.05.2016 56erad.txt e_recept 22.00
05.05.2016 55 participacija 2.00
05.05.2016 56 RadnaTaksa 8.00
05.05.2016 56erad.txt e_recept 34.00
06.05.2016 56 RadnaTaksa 11.00
06.05.2016 56erad.txt e_recept 47.00
drugi
04.05.2016 36.00
05.05.2016 44.00
06.05.2016 58.00
a trebalo bi biti samo jedan
04.05.2016 56 RadnaTaksa 14.00
04.05.2016 56erad.txt e_recept 22.00
...
04.05.2016 36.00

nadam se da sam malo pojasnio
pozdrav
↑  ↓

#4 26.05.2016 08:27
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Problem Petlja
Znaci ti hoces sume po danima j to naravno poslije ispisa taksi.
E sad gdje je samo jedna vrsta takse tu netreba.
Jesam li sad razumio.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#5 26.05.2016 11:50
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,700


Predmet:Re: Problem Petlja
Da li bi trebalo sliciti ovome?

PreuzmiIzvorni kôd (Text):
  1. !
  2.         ime:
  3.         ulica:
  4. Izvjestaj o prodatim artiklima za period
  5.       od 01.05.2016  do 23.05.2016
  6. ========================================
  7.     Datum        Taxa              Iznos
  8. ========================================
  9. 03.05.2016  56 RadnaTaksa           2.00
  10. ........................................
  11. 03.05.2016                          2.00
  12. ''''''''''''''''''''''''''''''''''''''''
  13. 04.05.2016  56 RadnaTaksa          14.00
  14. 04.05.2016  56erad.txt e_recept    22.00
  15. ........................................
  16. 04.05.2016                         36.00
  17. ''''''''''''''''''''''''''''''''''''''''
  18. 05.05.2016  55 participacija        2.00
  19. 05.05.2016  56 RadnaTaksa           8.00
  20. 05.05.2016  56erad.txt e_recept    34.00
  21. ........................................
  22. 05.05.2016                         44.00
  23. ''''''''''''''''''''''''''''''''''''''''
  24. 06.05.2016  56 RadnaTaksa          11.00
  25. 06.05.2016  56erad.txt e_recept    47.00
  26. ........................................
  27. 06.05.2016                         58.00
  28. ''''''''''''''''''''''''''''''''''''''''
  29. 07.05.2016  55 participacija        2.00
  30. 07.05.2016  56erad.txt e_recept     9.00
  31. ........................................
  32. 07.05.2016                         11.00
  33. ''''''''''''''''''''''''''''''''''''''''
  34. 09.05.2016  55 participacija        2.00
  35. 09.05.2016  56 RadnaTaksa          20.00
  36. 09.05.2016  56erad.txt e_recept    27.00
  37. ........................................
  38. 09.05.2016                         49.00
  39. ''''''''''''''''''''''''''''''''''''''''
  40. 10.05.2016  56 RadnaTaksa           4.00
  41. 10.05.2016  56erad.txt e_recept    21.00
  42. ........................................
  43. 10.05.2016                         25.00
  44. ''''''''''''''''''''''''''''''''''''''''
  45. 11.05.2016  55 participacija        6.00
  46. 11.05.2016  56 RadnaTaksa          10.00
  47. 11.05.2016  56erad.txt e_recept    52.00
  48. ........................................
  49. 11.05.2016                         68.00
  50. ''''''''''''''''''''''''''''''''''''''''
  51. 12.05.2016  55 participacija        5.00
  52. 12.05.2016  56 RadnaTaksa          19.00
  53. 12.05.2016  56erad.txt e_recept    22.00
  54. ........................................
  55. 12.05.2016                         46.00
  56. ''''''''''''''''''''''''''''''''''''''''
  57. 13.05.2016  56erad.txt e_recept    43.00
  58. ........................................
  59. 13.05.2016                         43.00
  60. ''''''''''''''''''''''''''''''''''''''''
  61. 14.05.2016  56erad.txt e_recept     5.00
  62. ........................................
  63. 14.05.2016                          5.00
  64. ''''''''''''''''''''''''''''''''''''''''
  65. 16.05.2016  56 RadnaTaksa           7.00
  66. 16.05.2016  56erad.txt e_recept    40.00
  67. ........................................
  68. 16.05.2016                         47.00
  69. ''''''''''''''''''''''''''''''''''''''''
  70. 17.05.2016  56erad.txt e_recept    34.00
  71. ........................................
  72. 17.05.2016                         34.00
  73. ''''''''''''''''''''''''''''''''''''''''
  74. 18.05.2016  56 RadnaTaksa           9.00
  75. 18.05.2016  56erad.txt e_recept    38.00
  76. ........................................
  77. 18.05.2016                         47.00
  78. ''''''''''''''''''''''''''''''''''''''''
  79. 19.05.2016  56 RadnaTaksa           6.00
  80. 19.05.2016  56erad.txt e_recept    59.00
  81. ........................................
  82. 19.05.2016                         65.00
  83. ''''''''''''''''''''''''''''''''''''''''
  84. 20.05.2016  56 RadnaTaksa          23.00
  85. 20.05.2016  56erad.txt e_recept    21.00
  86. ........................................
  87. 20.05.2016                         44.00
  88. ''''''''''''''''''''''''''''''''''''''''
  89. 21.05.2016  55 participacija        1.00
  90. 21.05.2016  56erad.txt e_recept     5.00
  91. ........................................
  92. 21.05.2016                          6.00
  93. ''''''''''''''''''''''''''''''''''''''''
  94. 23.05.2016  56erad.txt e_recept    30.00
  95. ........................................
  96. 23.05.2016                         30.00
  97. ''''''''''''''''''''''''''''''''''''''''
  98. ----------------------------------------
  99. 03.05.2016                          2.00
  100. 04.05.2016                         36.00
  101. 05.05.2016                         44.00
  102. 06.05.2016                         58.00
  103. 07.05.2016                         11.00
  104. 09.05.2016                         49.00
  105. 10.05.2016                         25.00
  106. 11.05.2016                         68.00
  107. 12.05.2016                         46.00
  108. 13.05.2016                         43.00
  109. 14.05.2016                          5.00
  110. 16.05.2016                         47.00
  111. 17.05.2016                         34.00
  112. 18.05.2016                         47.00
  113. 19.05.2016                         65.00
  114. 20.05.2016                         44.00
  115. 21.05.2016                          6.00
  116. 23.05.2016                         30.00
  117. ----------------------------------------
  118. SVEUKUPNO :                       660.00 KM
  119. ----------------------------------------
  120. d
  121. i

zivot je moja domovina.
Ovaj post je ureden 2 puta. Posljednja izmjena 26.05.2016 11:51 od strane Avko. ↑  ↓

#6 26.05.2016 12:40
nevsad Van mreze
Clan
Registrovan od:01.09.2010
Postovi:228


Predmet:Re: Problem Petlja
da to treba upravo tako

pozdrav
↑  ↓

#7 26.05.2016 13:49
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,700


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):
  1. Print #1, "----------------------------------------"
  2. rst.MoveFirst
  3. Do Until rst.EOF
  4.    Suma = Suma + rst!SumOfiznos
  5.    rst.MoveNext
  6. Loop
  7. 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):
  1. Dim strSQL As String
  2. Dim rs As DAO.Recordset
  3.  
  4. strSQL = "KORISNIK"
  5. strSQL="
  6.         SELECT * from Qzaperiod1
  7.         WHERE datum
  8.                 BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')
  9.         "
  10.  
  11. Set rs = CurrentDb.OpenRecordset(strSQL)
  12.  
  13. WITH rs
  14.  
  15.     IF NOT .BOF AND NOT .EOF Then 'provjerimo dali uopce ima podataka u bazi
  16.         'dobro je pomaknuti se na kraj baze pa onda opet na pocetak
  17.         'nije neophodno ali ponekad zna pomoci
  18.         .MoveLast
  19.                 .MoveFirst
  20.        
  21.         WHILE (Not .EOF)
  22. 'WHILE LOOP petlja u kojoj kada dodemo do kraja baze (EOF)izlazimo iz petlje
  23.         Debug.Print rs.Fields("imeKolone1") & " " & rs.Fields("imeKolone2")
  24. ' mozes podatke umjesto u msgbox ispisivati u debug (immediate window)
  25.             .MoveNext
  26. 'petlja nastavlja dalje i ispisuje u immedia prozoru, mozemo zaustaviti sa break point ili CTRL+Break
  27.         WEND
  28.     END IF
  29.     .close
  30. 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. ↑  ↓

#8 26.05.2016 14:25
nevsad Van mreze
Clan
Registrovan od:01.09.2010
Postovi:228


Predmet:Re: Problem Petlja
zato sto nisam mogao to sto zelim postici iz

Set rst = CurrentDb.OpenRecordset("select * from Qzaperiod1 WHERE datum BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')")

napravio sam
Set rst = CurrentDb.OpenRecordset("select * from Qzaperiod2 WHERE datum BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')")

da bi dobio sumu po danu
ali mislim da kao sam to uradio, da je to nakaradno rijesenje
puno je elegantnije da poslije taksa pojedinacno budu za taj dan sabrate u jednoj liniji
pozdrav

nevsad r
↑  ↓

#9 26.05.2016 14:30
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Postovi:10,612


Predmet:Re: Problem Petlja
Nemozes imati dvije petlje jednu za artikle jednu za sumu.
Moras imati jednu petlju a sum racunati po uslovu odnosno kljucu.
Kljuc bi mogao biti datum.
Znaci iz prvog rst iscitas datum pa pa na osnovu njega kreiras drugi rs sa uvjetom tog datuma.
Ako ne ide odradit cu.
Moze i sa SQL-om a moze i kodom.
Podrška samo putem foruma, jer samo tako i ostali imaju koristi od toga.
↑  ↓

#10 26.05.2016 14:34
Avko Van mreze
Administrator
Registrovan od:28.05.2014
Postovi:4,700


Predmet:Re: Problem Petlja
ja bi to rijesio recimo ovako:

nakon sto izaberem izmedu datuma

PreuzmiIzvorni kôd (Text):
  1. Set rst = CurrentDb.OpenRecordset("select * from Qzaperiod2  WHERE datum BETWEEN DATEVALUE('" & pocetni & "') AND DATEVALUE('" & krajnji & "')")
  2. izn = 0
  3. Suma = 0
  4. rst.MoveFirst
  5. Datum = rst!Datum
  6. Do Until rst.EOF
  7.     izn = rst!SumOfiznos
  8.     Print #1, Format(rst!Datum, "dd.mm.yyyy"); Tab(41 - Len(Format(izn, "###0.00"))); Format(izn, "###0.00")
  9.     rst.MoveNext
  10. Loop

onda bi ponovo stavio
Set rst = CurrentDb.OpenRecordset("
SELECT * from Qzaperiod2
WHERE datum = E SADA BI OVDJE STAVIO DA MI IZBACI ZA MJESEC OD DATUMA IZ GORNJEG UPITA ,TO CE TI POMOCI NETKO TKO ZNA SQL JEZIK

i onda zbroji sumu svih dana toga mjeseca

PreuzmiIzvorni kôd (Text):
  1. Print #1, "----------------------------------------"
  2. rst.MoveFirst
  3. Do Until rst.EOF
  4.    Suma = Suma + rst!SumOfiznos
  5.    rst.MoveNext
  6. Loop
  7. rst.MoveFirst

zivot je moja domovina.
↑  ↓

Stranice (3):1,2,3


Sva vremena su GMT +02:00. Trenutno vrijeme: 2: 57 pm.