Avatar billede ms_2004 Nybegynder
15. september 2005 - 16:29 Der er 13 kommentarer og
2 løsninger

Løbende måned i Access

Hej,

Jeg har en tabel i Access, hvor et af felterne er et dato-felt.

Jeg ønsker at lave en forespørgsel. således at jeg altid får returneret de records, der ligger i forrige måned. Det skal helst fungere dynamisk, således at der ikke skal ændres i forespørgslen efter hver måned.

Nogen der har en ide?

Mvh

MS_2004
Avatar billede mugs Novice
15. september 2005 - 16:32 #1
kabbak lavede denne i et tidligere spørgsmål:

<= DateAdd("m";-1;Date())
Avatar billede mugs Novice
15. september 2005 - 16:50 #2
Avatar billede mugs Novice
15. september 2005 - 16:53 #3
Denne er afprøvet:

<=DateAdd("m";-1;Date()) And >=DateAdd("m";-2;Date())

Indsættes i kriteriefeltet under dit datofelt
Avatar billede ms_2004 Nybegynder
15. september 2005 - 17:02 #4
Synes ikke helt jeg kan få det til at virke. Problemet er, at hvis jeg er i september og har følgende data:

ID      Dato
-------------------
1        15-07-2005
2        18-07-2005
3        10-08-2005
4        09-09-2005

Så ønkser jeg KUN at få returneret de records der ligger i August (forrige måned) - altså ID=3.

>= DateAdd("m";-1;Date()) giver resultatet ID=4 (klart nok), og
=Month(DateAdd("m";-1;Date())) som jeg måske troede ville virke, returnerer ingenting...
Avatar billede mugs Novice
15. september 2005 - 17:13 #5
Jeg fastholder at denne fungerer:

<=DateAdd("m";-1;Date()) And >=DateAdd("m";-2;Date())

Jeg kan sende dig min terstdb, blot læg din e-mail.
Avatar billede claesdamlund Nybegynder
15. september 2005 - 17:14 #6
Lav et beregnet felt i din forespørgsel:

Nuværende_måned: Month([Dato])

Giver dig månedsdelen for alle dine datoer. I kriteriet for det bregnede felt indsætter du:

DateAdd("m";-1;Date())
Avatar billede mugs Novice
15. september 2005 - 17:18 #7
claes > Det var min første tanke, men det returnerer ingen poster, selvom der er poster fra AUG måned der opfylder kriteriet.
Avatar billede claesdamlund Nybegynder
15. september 2005 - 17:31 #8
Undskyld. Kriteriet skal være:

Month(DateAdd("m";-1;Date()))
Avatar billede claesdamlund Nybegynder
15. september 2005 - 17:32 #9
-Dateadd returner jo en dato, mens Month(dato) returnerer et heltal.
Avatar billede mugs Novice
15. september 2005 - 17:34 #10
Så kører det :o)
Avatar billede ms_2004 Nybegynder
15. september 2005 - 17:37 #11
Hej,

>Claes - det virker, smid lige et svar, hvis du vilhave point.

>Mugs - Jeg kan ikke få din <= .. AND >=.. til at virke. Den returnerer også records for juli...

Rigtig mange TAK til jer begge, fedt i gider hjælpe - Eksperten holder!

MVH
MS_2004
Avatar billede mugs Novice
15. september 2005 - 17:39 #12
Min kode fungerer. Men lige meget - Claes' er langt mere elegant, så han fortjener point.
Avatar billede claesdamlund Nybegynder
15. september 2005 - 19:45 #13
Tak!!!
Avatar billede kjulius Novice
15. september 2005 - 23:33 #14
Et par kommentarer:

--> mugs: Din kode opererer så vidt jeg kan se med en flydende måned, hvor spørgeren efterspørger en fast måned (den foregående).

--> claesdamlund: Din kode tager så vidt jeg kan se ikke hensyn til årstallet. Hvis tabellen indeholder data for flere år, skal der vel også testes for det?
Avatar billede claesdamlund Nybegynder
16. september 2005 - 08:49 #15
Enig Kjulius:

Den kunne udbygges med endnu et beregnet felt:

År:Year(Dato)

Og et tilhørende kriterie:

Year(DateAdd("m";-1;Date()))
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

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