15. maj 2003 - 13:09Der er
12 kommentarer og 1 løsning
Beregning af akkumuleret saldo
Hej
Jeg har et problem vedr. beregning af akkumeleret værdi i Access. Der findes åbenbart ingen funktion i Access der kan finde ud af dette, men jeg forestiller mig, at jeg kan køre en makro der opretter dette felt for den akkumulerede saldo.
Mine nuværende felter:
Kundenummer Dato Saldo
Tabellen er sorteret efter dato. Dvs. jeg via en makro ønsker at få oprettet en ny tabel, med tilføjelse af en akkumuleret saldo for hver kunde, der således kommer til at have følgende felter:
Jeg skal nok forklare tingene lidt bedre og jeg har også brugt vildledende navne for felterne.
Det drejer sig en beregning af en saldoværdi (tænk på kontoudskriften fra banken) som ændres hver gang der sker en registrering (ind- og udbetalinger). Det jeg ønsker, er en makro, der ud fra en tabel (TABEL1) med kundenummer, datofelt og et beløb, der eksempelvis ser således ud:
Kundenummer Dato Beløb 12 10.05 100 12 12.05 200 30 06.02 150 30 15.04 250 Etc.
opretter en ny tabel (TABEL2) med et nyt saldo-felt, som kommer til at se således ud:
Dvs. programmet skal gruppere data efter kundenummer og siden summere alle beløbene fra den første dato for hver kunde (det jeg kalder akkumuleret saldo er sådan set ikke andet end akkumuleret sum af beløbene i tabellen) i et nyt saldo-felt i en ny tabel.
Jeg er ikke ret god til makroer, men denne forespørgsel gør svjks det du ønsker:
SELECT Kundenummer, Dato, Beløb, (SELECT SUM(Beløb) FROM Tabel1 T WHERE T.Kundenummer = Tabel1.Kundenummer AND T.Dato <= Tabel1.Dato) AS Saldo INTO Tabel2 FROM Tabel1
Den forespørgsel lægger ikke en akkumuleret saldo-sum ud for hvert beløb, men istedet det aktuelle saldobeløb. Kig lidt nærmere efter indholdet i ovenstående Saldo-felt og se det i forhold til Beløb-feltet og du vil forstå, hvad det er jeg mener.
Nu har jeg kigget nærmere efter. Jeg har også prøvet det i en Access-database med dine data fra TABEL1 og jeg får præcis det du ønsker i TABEL2. Er der flere krav til løsningen du ikke har nævnt?
Man skal nok være opmærksom på at man skal have en unik record for hvert beløb, dvs. man får problemer, hvis en kunde har 2 registreringer samme dato. Men jeg kan sagtens bruge det du kommer med, idet jeg bruger koden for registreringen, der sammen med kundenummeret er unikt, i tabellen.
Jeg får ikke tildelt dig points, fordi du ikke har givet "Svar", men "Kommentar". Så svar et eller andet og du får 200 points.
martin moth: tak for oplysningen, det vidste jeg ikke (jeg var usikker på kategorien). Ellers vil jeg mene, at det til enhver tid bliver den enkelte spørgsmålsstiller, der afgør sværhedsgraden (for mig var det et svært spørgsmål), dog jeg må indrømme at løsningen bestemt ikke ser ud af meget, men det kan man (ihvertfald ikke jeg) jo ikke vide på forhånd.
martin_moth> På ingen måde sarkastisk, det var bare for at bifalde gode råd.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.