01. januar 2009 - 02:53Der er
24 kommentarer og 1 løsning
Dynamisk forspørgsel, datokriterier, kvartaler
Hej eksperter
Først et godt nytår til alle her på E :o)
Jeg har en db til registrering af hændelser, efterhånden er der oprettet mange poster. For at lette overblikket har jeg implemteret nogle dynamiske forspørgsler der viser poster for faste perioder. Kriteriene for disse forspøgsler indsættes direkte i kriteriefeltet under datofeltet i mine forspørgsler, se nedestående:
Poster for aktuel uge: Between Date()-Weekday(Date();2)+1 And Date()-Weekday(Date();2)+7
Poster forrige uge: Between Date()-Weekday(Date();2)-6 And Date()-Weekday(Date();2)
Poster for aktuel måned: Between Date()-Day(Date())+1 And DateAdd("m";1;Date())-Day(DateAdd("m";1;Date()))
Poster forrige måned: Between DateAdd("m";-1;Date())-Day(DateAdd("m";-1;Date()))+1 And Date()-Day(Date())
Ovenstående forspørgsler virker fint, og køre helt automatisk. Well nu ville jeg gerne lave yderligere 2 forspørgsler, en der viser alle poster for det aktuelle kvartal, og en for sidste kvartal. Jeg har forsøgt at ændre den med posterne for den aktulle måned, hvor jeg har skiftet "m" ud med "q", i den tro at det så ville virke, det gør så det ikke.
Er det muligt også at lave dynamiske kvartalsforspørgsler efter samme princip som ovenstående. Desværre er jeg ikke skrap til datosyntakser, så jeg lidt på bar bund.
Just to make sure I know what your after. When you say "kvartal" do you mean the current month and following two, or do you want to see the actual quarter year your currently in? IE January to March, April to June and so on?
Using "q" as the interval in the DateAdd function just adds 3 months to the date but if this is what your after then it should work. EG for next 3 months from days date:
Between Date() And DateAdd("q";1;Date())
Why do you use Date()-Day(Date())+1 ? isnt it the same as
Tak for indlægget, ja ideen var at disse kvartalsforespørgsler skulle vise alle poster for det aktuelle kvartal i det indeværende år, altså som du siger jan, feb, marts - april, maj juni etc.
From the link you give, which is going back quite a while there is a link to a microsoft article. The article actually indicates how to get the first day of the current quarter. So using that and a DateAdd it should give you a period.
Nu har jeg testet det igennem, og det ser ud til at virker efter henstigten, se nedenstående, hvor syntaksen er sat ind i datofeltet på mine forspørgsler:
Poster, aktuelt kvartal: Between DateSerial(Year(Date());Int((Month(Date())-1)/3)*3+1;1) And DateAdd("m";3;DateSerial(Year(Date());Int((Month(Date())-1)/3)*3+1;1))
Poster sidste kvartal: Between DateSerial(Year(Date());Int((Month(Date())-1)/3)*3+1;1) And DateAdd("m";-3;DateSerial(Year(Date());Int((Month(Date())-1)/3)*3+1;1))
Tusind tak for hurtig hjælp, det jeg glad for :o). Læg et svar, så er der velfortjente point på vej.
Something you might notice. Adding 3 months to the first day o fthe quarter actually gives the first day o fthe next quarter, so you may need another dateAdd to subtract on eday to get back to the last day of the quarter. Ot instead of using between you could maybe use
Jeg tror ikke det vil virke helt efter hensigten. BETWEEN tager begge datoer med (både fra og til datoen) - i hvert fald i Access, det er lidt forskelligt fra db til db, desværre.
Derfor vil terrys forespørgsel ikke virke efter hensigten. Den medtager den første dag i næste kvartal.
Men du har jo hans Microsoft link, hvor beregningen af slutdatoen kvartalet er angivet, så det vil du hurtigt kunne rette til...
You need the start date (lowest) first I think >=DateAdd("m";-3;DateSerial(Year(Date());Int((Month(Date())-1)/3)*3+1;1)) AND DateSerial(Year(Date());Int((Month(Date())-1)/3)*3+1;1)
Jeg ser, at I allerede har klaret ærterne selv, hvilket jeg også formodede ville ske. terry plejer jo at leve op til sit alias og følge sagerne helt til dørs. :-)
Ja det gik, og helt enig, terry er super. Hvor er det fantatisk at have så kompetente brugere som jer her på E, som ofre lidt af jeres fritid for sølle point, blot for at hjælpe andre o:)
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.