Optellen in een query

Status
Niet open voor verdere reacties.

test1000

Gebruiker
Lid geworden
7 jul 2017
Berichten
258
Hoi,

Via een query verzamel ik info uit verschillende tabellen.
Nu wil ik een optelling maken in de query.
Voorbeeld zal hopelijk alles duidelijk maken.
De stock van artikel "Appel" is 35. (is de waarde van een tabel 'stock'.
Deze waarde komt telkens terug per record. Maar dat is geen probleem.
Dus het eerste totaal moet de stock + Gekocht (-verkocht)
Je kan nooit per datum En gekocht EN verkocht hebben.
Het is ofwel gekocht ofwel verkocht.

Voorbeeld

Artikel Datum Verkocht Gekocht Totaal

Appel 01/09/2018 0 5 25
Appel 05/09/2018 1 0 24 (25-1)
Appel 12/09/2018 0 10 34 (24+10)
Appel 13/09/2018 1 0 33 (34-1)

Dus het totaal van de vorig rij en daar het aantal verkocht aftrekken of bij gekocht het aantal bijtellen.
De kolommen "Artikel", "Datum", "Verkocht", "Gekocht" en "Stock" heb ik verzameld.
Dus eigenlijk is het resultaat van de query :

Artikel Datum Verkocht Gekocht Stock

Appel 01/09/2018 0 5 20
Appel 05/09/2018 1 0 20
Appel 12/09/2018 0 10 20
Appel 13/09/2018 1 0 20

De kolom "Totaal" moet ik samenstellen.

Maar op welke manier kan ik dit doen ?

Alvast bedankt
 
Laatst bewerkt:
Ik snap niets van je voorbeeldje, en al helemaal niet van je tweede ‘tabel’. Je schrijft dat je begint met een stock van 35 appelen. Vervolgens stel je dat je op een datum nooit zowel kan verkopen als kan inkopen. Lijkt mij een heel slecht business model, maar goed. En ook technisch gezien zou dat geen ene fluit uit mogen maken. Wat boeit het dat je op 5-9 12 appelen verkoopt en er 7 inkoopt?

Maar goed, je begint dus met 35 appelen, koopt er 5 bij, en eindigt met: 25! Bij ons zou dat met elke berekening en elke query toch echt op 40 eindigen. Zelfs als je er 5 verkoopt en niet inkoopt, kom je niet op 25. En dan je tweede tabel: daar eindigt elke mutatie op 20! Hoe kom je dáár nu weer aan?

Dit soort berekeningen is trouwens simpel te maken met een zgn. Lopend Totaal. Daarbij zet je in elke rij de mutaties t.o.v. de vorige rij. Maar dan krijg je dus bij het eerste record echt 40; ik kan de betrekkingen niet zodanig krom maken dat hij op 25 eindigt :).
Doe er vooral een voorbeeldje bij, want dat werkt een stuk makkelijker. Ik sta niet te popelen om eerst een voorbeeldje te maken.
 
Het is een voorbeeld.
Maw geen business model. En 'verkocht' en 'gekocht' is enkel, nogmaals, als voorbeeld.
Ik dacht dat het anders te ingewikkeld ging zijn :)
Ivm de 35 st stock en voorbeeld klopt dus idd niet. Maar het gaat om het principe.
Maw stock van 35 st heb ik achteraf toegevoegd zonder goed rekening te houden met het voorbeeld.
Dus laten wij het business model en de 'appelen' & 'peren' buiten beschouwing laten.

In een tabel kan ik de voorraad van vb 'appel' halen. Stel 20 st.
Dan maak ik een query, van verschillende tabellen, waar ik volgende gegevens kan halen :

Artikel Datum Verkocht Gekocht Stock

Appel 01/09/2018 0 5 20
Appel 05/09/2018 1 0 20
Appel 12/09/2018 10 0 20
Appel 13/09/2018 1 0 20
Appel 14/09/2018 0 6 20

Dus nu zou ik graag dat het eerste record de stock neemt met vermeerdert (of vermindert), in dit geval, gekocht. Dus 20 + 5 = 25
Dan het totaal van het tweede record is het totaal van het eerste record met, in dit geval, verkocht. Dus 25-1 = 24
Het derde record is het totaal van het tweede record met in dit geval gekocht is dus 24-10 = 14. En zo verder.

Dus het resultaat zou moeten worden :


Artikel Datum Verkocht Gekocht Stock Totaal

Appel 01/09/2018 0 5 20 25
Appel 05/09/2018 1 0 20 24
Appel 12/09/2018 10 0 20 14
Appel 13/09/2018 1 0 20 13
Appel 14/09/2018 0 6 20 19

Hopelijk is het nu iets duidelijker.
 
Je verhaal maakt het niet veel anders, anders dan dat je voorbeeldgetallen niet klopten. Nu nog een voorbeeldje in een tabel. Het is een misvatting om er van uit te gaan dat voorbeelden simpel moeten zijn omdat wij, de helpers, ze anders niet snappen. Dat geldt wellicht voor Word en Excel, maar database bouwers zijn gewend om de grijze cellen te gebruiken :). (Nu heb ik een hoop gerespecteerde Excel specialisten op de teentjes getrapt :D). Je kunt pas bruikbare hulp verwachten als je representatieve cases voorlegt.
Nogmaals: je hebt een query met een Lopend Totaal (Running Sum) nodig voor je vraag. Die is niet zo moeilijk te maken, en dat kost mij heel wat minder tijd dan een tabel inkloppen.
 
Als ik de stock wil weten per datum op welke manier kan ik dit bereiken.
Je hebt de stock op 01/01/2018. vb 50 st
Dan worden er artikelen gekocht en verkocht.
Per datum wil ik dan het totaal weten.
Artikel A
Stock op 01/01/2018 = 10 st
Op 05/01/2018 aangekocht 3 st
Op 07/01/2018 verkocht 1 st

Dus als resultaat :

Artikel Datum Stock
A 01/01/2018 10
A 05/01/2018 13 (10+3)
A 07/01/2018 12 (13-1)

Heb al gekeken met DSUM maar krijg het niet aan de praat.
Dus alle hulp is welkom.
 
Hier een link met voorbeeld op internet gevonden.
En dit is ongeveer wat ik wil.
Enkel wil ik sorteren op het veld "Prod" en dan telkens de optelling van het veld "Amount".

In de query :
Veld "prod"
Veld "Amount" - oplopend
Veld "rt: DSum("[Amount]";"totaal";"[Amount] <=" & [amount])"
Dan is het wat ik wil betreft "rt" maar is niet gesorteerd op prod.

https://theaccessbuddy.wordpress.co...unning-total-or-a-cumulative-sum-part-1-of-2/
 
Ik weet hoe ik een running sum query moet maken, maar de link is wellicht interessant voor anderen :). Daarmee is jouw probleem dus nog niet opgelost, want ik zie nog steeds geen db met wat voorbeelddata. En ik heb nog steeds geen tijd (en vooral: zin) om tabellen te gaan inkloppen.
 
art sum

Hier een voorbeeldje.
Het eerste record van het artikel [Tas], gesorteerd op datum (A-Z), moet voor het veld [Totaal] de waarde 15 bevatten (5 stock + 10 benodigd).
(Indien het veld [Bevestigd] een waarde heeft met je de waarde aftrekken. Ben vergeten ook zo'n voorbeeld bij te doen).
Het tweede record van artikel [Tas] zou waarde 20 moeten zijn (15 + 5)
Derde record = 25 (20 + 5)
Vierde record = 38 (25 + 13)
Vijfde record = 41 (38 + 3)

Stel dat het laatste record een waarde 3 had bij het veld [bevestigd] (en niet bij het veld [georderd] dan zou de waarde 35 (38-3) moeten zijn.

Hopelijk kan je met deze info mij verder helpen.
Dus gesorteerd op datum.
Eerste record met begin stockwaarde.
En de velden [Benodigd] en [georderd] optellen.
De waarde van veld [Bevestigd] moet je aftrekken van [Totaal]

Hier de database :
Bekijk bijlage test.rar
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan