Waarde samentellen uit vorig record

Status
Niet open voor verdere reacties.

stoica

Gebruiker
Lid geworden
2 feb 2012
Berichten
5
Beste forumleden,
Ik ben nieuw op dit forum en weet dus niet of de vraag die ik ga stellen in het verleden al aan bod is gekomen. Ik zit met een probleem over Access (mogelijks gelinkt aan VBA).

Mijn Access-probleem:

Stel: ik heb de volgende velden in een tabel BOEKINGEN:
Id (autonummering)
Datum (lange datumnotatie)
Begintijd (korte tijdsnotatie)
Eindtijd (korte tijdsnotatie)
Normtijd (korte tijdsnotatie)
Saldo (korte tijdsnotatie)
Totaalsaldo (korte tijdsnotatie)

In het veld SALDO staat de volgende formule (dit werkt): = Normtijd – (Einddtijd – Begintijd) (bv saldo= 7:00 uur - (08:00 – 5:00 uur) = 4:00 uur

Nu mijn probleem:
In het veld Totaalsaldo moet de som gemaakt worden van de waarden uit het veld Saldo van de vorige records (in principe vanaf de eerste van de maand).

Dit lukt mij niet? Kunnen jullie mij bepaalde tips of werkwijzen geven?
 
Uiteraard welkom op het forum!
Ik ben nieuw op dit forum en weet dus niet of de vraag die ik ga stellen in het verleden al aan bod is gekomen
Daar hebben we de zoekfunctie voor ;)

Maar of de vraag al dan niet al aan bod is gekomen, hoeft je uiteraard niet te beletten om een vraag te stellen die meer met jouw situatie te maken heeft.

Om te beginnen: ik vermoed dat je met Access 2010 werkt, en daarin in de tabel een berekend veld hebt gemaakt. Eén tip: gooi dat veld gelijk weg, en gebruik het nooit meer! Bij Microsof lijken ze weddenschappen af te sluiten op de ontwerper die de meest onzinnige nieuwe 'verbeteringen' in Access kan bedenken, en de winnaar krijgt zijn bedenksel dan nog uitgevoerd ook! Naar het schijnt hebben ze deze ongein gestopt nu de laatste winnaar het berekende tabelveld heeft bedacht, want dit is dermate stompzinnig, dat men niet verwacht dat er nog iets onnozelers bedacht gaat worden :)
Dus ervan uitgaande dat je het berekende veld niet meer gaat gebruiken (het druist echt tegen alle database gebruiken en wetten in): berekeningen maak je in queries. Daar zijn die voor. En dat geld al helemaal voor wat jij wilt: een lopend totaal. Dat kan prima, maar vereist enige query kennis: je moet een enigszins ingewikkelde berekening maken met de functie DSUM. Een aardig voorbeeldje vind je hier.
 
Laatst bewerkt:
lopend totaal in een query maken

Goedemiddag,

ik heb een soortgelijk probleem waar ik niet uitkom.
Ik heb een query met de velden DATUM en M3. Ik wil graag een derde veld dat het lopende totaal weergeeft van de M3.

dus bijv:

DATUM M3
01-01-2013 6
08-01-2013 3
13-01-2013 4

Het derde veld moet dan het lopende totaal worden dus zoals onderstaand:

DATUM M3 TOTAAL
01-01-2013 6 6
08-01-2013 3 9
13-01-2013 4 13

Hoe doe ik dat in een query??

Met vriendelijke groet,

Jan van der Lugt
 
Je kunt met DSUM een lopend totaal maken. Hier een query voorbeeldje die je zo in Northwind kunt draaien.
Code:
SELECT DatePart("yyyy",[OrderDate]) AS AYear, DatePart("m",[OrderDate]) AS AMonth, Sum(Orders.Freight) AS Total, CCur(DSum("Freight","Orders","DatePart('m', [OrderDate])<=" & [AMonth] & " 
And DatePart('yyyy', [OrderDate])<=" & [AYear] & "")) AS [Running Total]
FROM Orders
GROUP BY DatePart("yyyy",[OrderDate]), DatePart("m",[OrderDate])
ORDER BY DatePart("yyyy",[OrderDate]), DatePart("m",[OrderDate]);
En een variant voor weektotalen:
Code:
SELECT DatePart("yyyy",[OrderDate]) AS AYear, DatePart("m",[OrderDate]) AS AMonth, DatePart("ww",[OrderDate],2,2) AS AWeek, Sum(Orders.Freight) AS Total, 
CCur(DSum("Freight","Orders","DatePart('ww', [OrderDate])<=" & [AWeek] & " And DatePart('m', [OrderDate])<=" & [AMonth] & " And DatePart('yyyy', [OrderDate])<=" & [AYear] & "")) AS [Running Total]
FROM Orders
GROUP BY DatePart("yyyy",[OrderDate]), DatePart("m",[OrderDate]), DatePart("ww",[OrderDate],2,2)
ORDER BY DatePart("yyyy",[OrderDate]), DatePart("m",[OrderDate]), DatePart("ww",[OrderDate],2,2);
Een dagtotaal is dus simpeler, want je hebt minder voorwaarden.
 
Goedemiddag,

Ik ben een eind gekomen, maar ik heb het nog niet voor elkaar.
De DSum expressie werkt op het moment dat ik geen Criterium ingeef, als ik echter een criterium gebruik dan krijg ik de foutmelding van een syntax fout. Ik zie echter de fout niet.

De query ZONDER Criterium in DSum is als volgt:


SELECT DatePart ('d', [DATUM]) AS aday, Sum([Kopie van Inname grond].m3a) AS SomVanm3a, DSum("m3a","Kopie van inname grond") AS LOPENDTOTAAL
FROM [Kopie van Inname grond]
GROUP BY DatePart ('d', [DATUM])
ORDER BY DatePart ('d', [DATUM]);

Deze query werkt en geeft de volgende resultaten:

Query1
aday SomVanm3a LOPENDTOTAAL
2 2,5 101,5
4 7 101,5
7 1 101,5
9 7 101,5
10 10 101,5
11 10 101,5
14 30 101,5
15 30 101,5
30 2 101,5
31 2 101,5
101,5


De query MET Criterium in DSum heb ik als volgt gemaakt:

SELECT DatePart ('d', [DATUM]) AS aday, Sum([Kopie van Inname grond].m3a) AS SomVanm3a, DSum("m3a","Kopie van inname grond", "DatePart('d', [DATUM])<="&[aday]&") AS LOPENDTOTAAL
FROM [Kopie van Inname grond]
GROUP BY DatePart ('d', [DATUM])
ORDER BY DatePart ('d', [DATUM]);

Hier zit dus een fout in, maar ik weet niet wat er fout aan is. Kun je me helpen?

Mvg,

Jan van der Lugt
 
Volgens mij zit er een foutje in:
Code:
DSum("m3a","Kopie van inname grond", "DatePart('d', [DATUM]) <= " & [aday]) AS LOPENDTOTAAL
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan