Avatar billede marcus25 Nybegynder
16. maj 2001 - 10:29 Der er 8 kommentarer og
1 løsning

Løbende sum i forespørgsel

Hvordan laver man en løbende sum i en forespørgsel? Der findes en nem funktion under rapporter, men det må da også kunne lade sig gøre i en forespørgsel.
F.eks hvis første kolonne indeholder 1,2,3,4 hvordan beregnes i næste kolonne: 1,3,6,10?
Avatar billede terry Ekspert
16. maj 2001 - 11:42 #1
Thats a good one marcus25!
I think the only way this can be done is by calling a function from your query and calculating the løbende sum. I would think it necessary that you call the function with the current records ID if thats possible so you know where you have come to. Then the function can calculate the sum up to that ID.

Does that give you some idea?
Avatar billede marcus25 Nybegynder
16. maj 2001 - 22:25 #2
Thanks, that is probably one way too do it. But I don\'t take that for an answer. There must someone who knows an easier way to do it, or is able to give me a clue for writing te function?
Avatar billede terry Ekspert
17. maj 2001 - 08:12 #3
Hi marcus25
Didnt expect you would, but we are talking about an hour or more work. So for 60 points I came with an idea only.
The idea I suggested will be about the only way you can solve the problem. If there is an easier way then I too will learn something!

You can send me your dB and I will get you started. I will also include comments so that you can see what the idea is. Hows that?
Avatar billede mkjeldsen Nybegynder
17. maj 2001 - 09:17 #4
Så vidt jeg kan se, kan du lave de udregninger du ønsker ved at bruge \"Generer-knappen\" i værktøjslinien - (selvfølgelig samtidig med at du er i gang med at lave en forespørgsel) Du skal lave udregningerne i den første ledige kolonne i din forespørgsel.

Mogens
Avatar billede mkjeldsen Nybegynder
17. maj 2001 - 09:18 #5
Efter du har klikket på Generer-knappen, virker det lidt ligesom at lave en udregning i Excel
Avatar billede terry Ekspert
17. maj 2001 - 09:33 #6
Mogens, its more than likely possible to use the \"Generer-knappen\", but the problem is calculating the \"løbene sum\".

Its a case of summing up the records preceding records value for each record. Thats why I suggested a function where things are a little more flexible.
17. maj 2001 - 10:03 #7
hey,

Hvis jeg skulle lave funktionene, så ville jeg nok lave den således:

Public Function LøbendeSum(Værdi As Single, Optional Reset As Boolean) As Single
    Static tmpVærdi As Single
    If Reset Then tmpVærdi = 0
    tmpVærdi = Værdi + tmpVærdi
    LøbendeSum = tmpVærdi
End Function

Herefter kan jeg så bruge den i min forespørgsel således:
LøbendeSum: LøbendeSum([Antal];IIf([Varenr]=DFirst(\"[Varenr]\";\"Tabelnavn\");True;False))

hvor [Værdi] er det felt, der skal summeres og [Nøglefelt] er (som navnet lidt antyder) nøglefeltet i tabellen.

Grunden til at nøglefeltet skal med, er at funktionen benytter en Static variabel, som skal nulstilles hver gang forespørgslen køres. Derfor checker jeg om vi står på den første post.

Forespørgslen vil ikke være særlig hurtig, hvis der er mange data i, men er nok svært at komme uden om.

NB: Det kræves at forespørgslen sorteres på nøglefeltet!

Jeg ved ikke om det kan bruges?

/Thomas
17. maj 2001 - 10:05 #8
(...rettelse)

Der havde lige sneget sig en mindre skrivefejl ind.
Dette er det rigtige svar:


Hvis jeg skulle lave funktionene, så ville jeg nok lave den således:

Public Function LøbendeSum(Værdi As Single, Optional Reset As Boolean) As Single
    Static tmpVærdi As Single
    If Reset Then tmpVærdi = 0
    tmpVærdi = Værdi + tmpVærdi
    LøbendeSum = tmpVærdi
End Function

Herefter kan jeg så bruge den i min forespørgsel således:
LøbendeSum: LøbendeSum([Værdi];IIf([Nøglefelt]=DFirst(\"[Nøglefelt]\";\"Tabelnavn\");True;False))

hvor [Værdi] er det felt, der skal summeres og [Nøglefelt] er (som navnet lidt antyder) nøglefeltet i tabellen.

Grunden til at nøglefeltet skal med, er at funktionen benytter en Static variabel, som skal nulstilles hver gang forespørgslen køres. Derfor checker jeg om vi står på den første post.

Forespørgslen vil ikke være særlig hurtig, hvis der er mange data i, men er nok svært at komme uden om.

NB: Det kræves at forespørgslen sorteres på nøglefeltet!

Jeg ved ikke om det kan bruges?

/Thomas 
Avatar billede marcus25 Nybegynder
18. maj 2001 - 13:52 #9
Tusind tak for de mange gode svar! Thomas, det virker simpelthen fortræffeligt!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester