[ maticmilos @ 27.02.2008. 19:47 ] @
Da pojasnim,

Izvestaj izlistava neku tabelu i sadrzi kolone A, B, C i D. Vrednost prvog ispisa za polje C imamo. Kako da za naredne vrednosti polja C uzimamo vrednost polja D iz prethodnog ispisa u odnosu na tekuci? (U polju D se stampa zbir A+B+C)

Dacu primer da razjasnim:

A B C D
1 2 3 6
2 1 6 9
4 3 9 16
5 8 16 29


Nadam se da sam lepo formulisao konfuzno pitanje.

Hvala na pomoci!
[ domaci_a_nas @ 27.02.2008. 20:32 ] @
Ne znam da li formu posmatraš kao kao single view ili datasheet / continuous forms.

Ja bih napisao nešto kao C.DefaultValue = D.Value, s tim da polje D ne mora da postoji u tabeli, već stoji kao izraz A+B+C u query koji se koristi kao RecordSource forme.

[ Zidar @ 27.02.2008. 22:26 ] @
U pitanju je report a ne forma. Izgleda kao da iams dve vrste redova:
prvi red koji je f(A,B,C) = D
svi ostali redovi, f(A,B,C=(D iz prethodnog reda)) = D

Ne vidim kako to moze na reportu, kad se u detail sekciji formatira jedan red reporta, taj se red 'zaboravja' pri prelasku na sledeci.
Jedini izuzetak je Running sum, koji se moze primeniti na kolonu D. Mislim da ne moze da se resi U Accessu, ni u kveriju. Kveri bi trebalo da je iterativan, sto u Accesu ne moze.

Ako bas mora ovako, napravi praznu tabelu, pa je napuni kroz petlju na nacin koji ti treba. Onda report cita iz te tabele.
Siguran sam da ce kolega domaci_a_nas ce biti srecan da ti pokaze kod za punjeje tabele

A mozes sve da uradis u Excelu ako ti bas treba

[ domaci_a_nas @ 28.02.2008. 00:36 ] @
Bas neću biti srećan da pokažem bilo šta Prekasno sam video da je u pitanju izveštaj, već sam bio poslao poruku, ali je poenta i dalje ista, bar u onom delu D = A + B + C. Mogu se koristiti unbound kontrole na izveštaju, kojima se dodeljuje vrednost kroz VBA kod pomoću promenljivih koje se definišu na nivou reporta. Tom prilikom treba imati u vidu da se format event javlja dva puta, kod treba pisati tako da se neke vrednosti ne dupliraju.
[ maticmilos @ 28.02.2008. 07:48 ] @
Nisam lepo rekao! Kolone A B C i D se ne vuku iz tabele, vuce se samo A B i C, dok se kolona D racuna u reportu. Nebitno, moze i u kveriju. Bitno je da u samom reportu kolona C dobija vrednost prethodnog D u svim ispisima posle prvog (Ovo poslednje mogu da resim IF-om). Posto ne znam dobro sintaksu VBA, a vucem neku logiku c-a, paskala i slicnih, pa sam mislio da postoji nesto me.C=(previous)me.D.

Svakako hvala na pomoci!
[ DarioBH @ 28.02.2008. 08:21 ] @
ne kontam kako mislis polje C se vuce iz tabela, a kazes da je vrijednost tog polja prethodno D, znaci i polje C se izracunava na samom izvjestaju na osnovu prethodnih vrijednosti polja D
[ domaci_a_nas @ 28.02.2008. 10:11 ] @
Mislim da mu je ipak potrebna početna vrednost za polje C, ali ne mora biti u istoj tabeli kao A i B. Recimo da se to polje na reportu zove StartC i da je uključeno u RecordSource reporta i da se nalazi skriveno na reportu. Takođe bih dodao i brojač linija, tj. textbox RecCounter sa ControlSource =1 i Runing Sum Over All. Brojač je potreban jer se format Event dešava dva puta i nisam imao drugi način da odredim da li je u pitanju prvi record ili ne. Kontrole C i D su unbound.


Option Compare Database
Option Explicit
Dim StaroD As Long
Dim Otkazi As Boolean

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
If RecCounter = 1 Then StaroD = StartC
C.Value = StaroD
D.Value = Val(A) + Val(B) + Val(C)
StaroD = D
End Sub

[ maticmilos @ 28.02.2008. 20:58 ] @
Resio sam problem preko kverija koji kreira tabelu, a zatim u formi imam dugme OBRACUN koje modifikuje vrenosti u novoj tabeli.

Private Sub Command0_Click()

Dim vrpo As Double
Dim db As Database
Dim rst As Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("punjena_tabela")

vrpo = 0
rst.MoveFirst

Do
vrpo = rst.Fields(12)
rst.MoveNext

If rst.EOF = True Then Exit Do
If rst.Fields(3) = 1 Then vrpo = 0

rst.Edit
rst.Fields(8) = vrpo + rst.Fields(8)
rst.Update

rst.Edit
rst.Fields(11) = (rst.Fields(6) + rst.Fields(7) + rst.Fields(8) + rst.Fields(9) + rst.Fields(10)) * 0.1
rst.Update

rst.Edit
rst.Fields(12) = rst.Fields(6) + rst.Fields(7) + rst.Fields(8) + rst.Fields(9) + rst.Fields(10) + rst.Fields(11)
rst.Update
Loop

End Sub

Hvala na predlozima!