veit > microsoft.public.* > microsoft.public.office.access

 #1  
15.06.2004, 13:49
Robert-Jan
Mijn probleem leek me simpel maar ik kom er niet uit:

Ik wil van een auto in een rapport de kmstand, getankte
liters en per keer het verbruik weergeven.
Tabel ziet er als volgt uit:

[Datum] [Kmstand] [Liters]

Gewenst resultaat:

Datum Kmstand Liters Verbruik
1-1-04 500 50,0 10,0
7-1-04 950 51,0 8,8
12-1-04 1500 49,0 11,2

Om het verbruik te berekenen heb ik het verschil tussen de
huidige kmstand en de vorige nodig. Hoe krijg ik dit op
iedere regel van het rapport voor elkaar? Gemiddeld
verbruik als rapportvoettekst is natuurlijk geen enkel
probleem via Min en Max, maar hier kom ik niet uit.

Wie helpt?

Alvast bedankt!
 #2  
15.06.2004, 16:34
Daan M
Waarom niet in Excel?
Heb zelf al een dergelijke sheet gemaakt voor mezelf met:
-Datum
-Dagen (verstreken t.o.v. de vorige tankbeurt) (wordt automatisch ingevuld)
-Weeknr (wordt automatisch ingevuld)
-KM-stand
-Liters
-Prijs per liter
-Totaalprijs tankbeurt (wordt automatisch ingevuld)
-Aantal km's (wordt automatisch ingevuld)
-Gem.verbruik (wordt automatisch ingevuld)
-Kosten per km (wordt automatisch ingevuld)
-Gegevens over de pomp

-Totaalprijs sinds invoeren (wordt automatisch ingevuld)
-Aantal km's sinds invoeren (wordt automatisch ingevuld)
-Gem. verbruik sinds invoeren (wordt automatisch ingevuld)
-Kosten per KM sinds invoeren (wordt automatisch ingevuld)

Als je even een e-mail adres achterlaat, dan mail ik je het bestandje.

Daan

"Robert-Jan" <anonymous> wrote in message
news:280a
[..]
 #3  
15.06.2004, 17:44
Robert-Jan
Daan,

Dit overzicht is onderdeel van een grote database in
Access, dus Excel is dan een beetje een vreemde eend in de
bijt.

In ieder geval hartstikke bedankt!

RJ
 #4  
15.06.2004, 18:07
XPS35
> Daan,
> Dit overzicht is onderdeel van een grote database in
> Access, dus Excel is dan een beetje een vreemde eend in de
> bijt.
> In ieder geval hartstikke bedankt!
> RJ


Zo'n vreemde eend hoeft Excel niet te zijn, want je kan Access en Excel
gegevens feilloos (dynamisch) aan elkaar koppelen.

Als je het binnen Access houdt is het een afhankelijk van je tabel(len).
Kernvraag is: hoe vind je het vorige record (hoe herken je dat)? De
eenvoudigste oplossing daarvoor is de records een oplopend (voor de
gebruiker onzichtbaar) nummer te geven (want je datums zijn niet
opeenvolgend). Je kan dan altijd in een query aan de hand van het huidige
record (nummer) het vorige opzoeken en aldus de verschillen berekenen.
In een database met jaarlijkse meterstanden heb ik ooit eens een volgend
berekend veld in een query gezet om de beginstand (= eindstand vorig jaar)
voor een bepaalde meter op te zoeken:
BStand: nz(DLookUp("EStand";"SStand";"Jaar = " & [Jaar] & " - 1 AND SMeter =
" & [SMeter]);0)

Groet,

Peter
 #5  
15.06.2004, 18:35
keesb
Peter,

Een volgnummer toekennen vind ik gevaarlijk, als je dan keer niet
gronologisch invoert (b.v. omdat je een datum vergeten bent) dan gaat je
hele berekening
de mist in, omdat je hoogste volgnummer dan niet je laatste (datum) record
is. Overigens maakte ik in mijn oplossing ook een denkfout, je kunt dsum
niet gebruiken want je hebt alleen totalen.

Het lijkt mij handiger om met het invoeren in het form de gereden
kilometerstand te berekenen en weg te schrijven. Dit kan met een dlookup
waarbij de datum in het criterium de hoogst ingevoerde (tabel)datum moet
zijn en beneden de waarde van de datum in het form moet liggen.

Kees

"XPS35" <xps35> schreef in bericht
news:a544
[..]
 #6  
15.06.2004, 19:48
XPS35
> Peter,
> Een volgnummer toekennen vind ik gevaarlijk, als je dan keer niet
> gronologisch invoert (b.v. omdat je een datum vergeten bent) dan gaat je
> hele berekening
> de mist in, omdat je hoogste volgnummer dan niet je laatste (datum) record
> is. Overigens maakte ik in mijn oplossing ook een denkfout, je kunt dsum
> niet gebruiken want je hebt alleen totalen.
> Het lijkt mij handiger om met het invoeren in het form de gereden
> kilometerstand te berekenen en weg te schrijven. Dit kan met een dlookup
> waarbij de datum in het criterium de hoogst ingevoerde (tabel)datum moet
> zijn en beneden de waarde van de datum in het form moet liggen.
> Kees


Daar heb je een punt. Ben sowieso qua performance niet happy met de
oplossing. Ga nog ff broeden op iets met gebeurtenissen in het rapport.

Ik het nog niet helemaal overzien, maar ik denk dat jij ook problemen krijgt
met het achteraf toevoegen. De tussen te voegen boeking klopt wel, maar de
in tijd achterliggende denk ik niet meer.

Peter
 #7  
15.06.2004, 21:28
XPS35
> Daar heb je een punt. Ben sowieso qua performance niet happy met de
> oplossing. Ga nog ff broeden op iets met gebeurtenissen in het rapport.


Met gebeurtenissen (bij openen van het rapport en afdrukken van de
detailregel) kom je er dus ook c.q. wel. Op basis van mijn meterstanden
voorbeeldje ziet het geheel aan gebeurtenissen er dan zo uit:

Option Compare Database
Option Explicit
Public VorigeStand As Integer
Public VorigeMeter As Long

Private Sub Detail_Print(Cancel As Integer, PrintCount As Integer)
If Me.SMeter <> VorigeMeter Then
VorigeStand = 0
End If

Me.Verbruik = Me.EStand - VorigeStand
VorigeStand = Me.EStand
VorigeMeter = Me.SMeter
End Sub

Private Sub Report_Open(Cancel As Integer)
VorigeMeter = 9999999
End Sub

Peter
 #8  
16.06.2004, 09:59
Jan Aerts
Ik kan je wel 'n mdb sturen die middels 'n query 'n nieuwe tabel aanmaakt,
die je dan vervolgens kunt gebruiken voor 'n rapport.

Jan

"keesb" <niet> wrote in message
news:a384
[..]
Soortgelijke onderwerpen