19. marts 2006 - 10:33Der er
15 kommentarer og 1 løsning
Forespørgsler og datokriterier
Hej Eksperter Jeg sidder med en opgave hvor jeg skal oprette et antal forespørgsler, det et must at disse bliver gemt som objekter.
I forespørgslerne er det et datofelt "AftaleDato", jeg søger hjælp til syntaxen for at trække data for forskellige perioder skrevet direkte i kriteriefeltet for datofeltet jvf. nedenstående:
1. Poster for den aktuelle uge
2. Poster for næste uge
3. Poster for sidste uge
4. Poster for den aktuelle måned
5. Poster for næste måned
6. Poster for sidste måned
7. Poster for det aktuelle år
8. Poster for for næste år
9. Poster for sidste år.
Altså 9 forspørgsler ialt, en for hver periode. Jeg kan godt få det til at virke i VBA jvf. nedenstående kodeeks.
'Aktuel måned Kode start' Dim sSQL As String sSQL = "Select * From Qaftaleoversigt WHERE format(AftaleDato, ""yyyymm"") = format(Dateadd(""m"", 0, date()), ""yyyymm"")" 'Kode slut'
'Næste måned kode start' Dim sSQL As String sSQL = "Select * From Qaftaleoversigt WHERE format(AftaleDato, ""yyyymm"") = format(Dateadd(""m"", 1, date()), ""yyyymm"")" 'Kode slut'
Det fint nok i VBA, men i den aktuelle opgave er det som sagt et must at forspørgslerne bliver gemt som objekter i databasen.
Jeg har så søgt rundt her på E og fundet nedenstående som faktisk viser poster for den aktuelle måned, syntaxen er skrevet direkte i kriteriefeltet for AftaleDatofeltet:
'Kode start' Between DateSerial(Year(Date());Month(Date());1) And DateSerial(Year(Date());Month(Date())+1;1-1) 'Kode slut'
Problemet er at jeg bare ikke forstår syntaxen,jeg har også forsøgt at ændre på den for at vise andre perioder feks. næste måned, men jeg kan ikke få det til at virke.
Virksomheder er på vej fra store sprogmodeller, der svarer på spørgsmål, til AI-agenter, der kan udføre opgaver på egen hånd. Det gør teknologien mere nyttig – og langt mere risikabel.
Her is a link which I think should help you on your way. With the examples given, you should be able to better understanding on how DateSerial works and get the other queries to work too. If not drop a line and I'll see what I can do.
Hej terry, tak for linket, det meget lærerigt, men jeg har problemer med at få det til at virke, hvis jeg feks.indsætter denne som kriterie i mit dataofelt i forspørgslen vises der ikke nogen poster når jeg efterfølgende køre forspørgselen, og der er poster i den aktuelle måned:
Okay denne ser ud til at vise poster for den aktuelle måned: Between DateSerial(Year(Date());Month(Date());1) And DateSerial(Year(Date());Month(Date())+1;1-1)
Denne ser ud til at vise poster for sidste måned: Between DateSerial(Year(Date());Month(Date());1) And DateSerial(Year(Date());Month(Date())-1;1+1)
Så langt så godt, men hvad med ugeperioderne,års persioderne måske DateSerial ikke er vejen frem her
you have to select th edate field using dateserial and also use it in the criteria
Example for current month:
SELECT tblDato.*, DateSerial(Year([dato]),Month([dato]),1) AS Expr1 FROM tblDato WHERE (((DateSerial(Year([dato]),Month([dato]),1))=DateSerial(Year(Date()),Month(Date()),1)))
so the select changes the date field (dato) to the first day of the month for each dates myear/month. Then the criteria gets set to the first day of the current year and month.
Hej terry Tak for indlæggende, jeg kan nu få vist alle poster for den aktuelle måned, men det kniber med forige måned, og næste måned, samt alle ugekriterierne. Jeg arbejder lige videre med det, og vender tilbage :o)
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE (((Qaftaleoversigt.AftaleDato) between Date()-Weekday(Date(),2)+1 and Date()-Weekday(Date(),2)+7));
Næste uge:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE (((Qaftaleoversigt.AftaleDato) between Date()-Weekday(Date(),2)+8 and Date()-Weekday(Date(),2)+14));
Forrige uge:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE (((Qaftaleoversigt.AftaleDato) between Date()-Weekday(Date(),2)-6 and Date()-Weekday(Date(),2)));
Aktuelle måned:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE Qaftaleoversigt.AftaleDato between Date()-Day(Date())+1 and Dateadd("m",1,Date())-Day(DateAdd("m",1,Date()));
Næste måned:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE Qaftaleoversigt.AftaleDato between Dateadd("m",1,Date())-Day(DateAdd("m",1,Date()))+1 and Dateadd("m",2,Date())-Day(DateAdd("m",2,Date()));
Forrige måned:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE Qaftaleoversigt.AftaleDato between Dateadd("m",-1,Date())-Day(DateAdd("m",-1,Date()))+1 and Date()-Day(Date());
Aktuelle år:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE Qaftaleoversigt.AftaleDato Between dateserial(year(date()),1,1) And dateserial(year(date())+1,1,1)-1;
Næste år:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE Qaftaleoversigt.AftaleDato Between dateserial(year(date())+1,1,1) And dateserial(year(date())+2,1,1)-1;
Forrige år:
SELECT Qaftaleoversigt.AftaleDato FROM Qaftaleoversigt WHERE Qaftaleoversigt.AftaleDato Between dateserial(year(date())-1,1,1) And dateserial(year(date()),1,1)-1;
Hej kjulius, jeg har nu prøvet dine forslag igennem, og det virker perfekt, tusind tak for hjælpen, så fik jeg langt om længe slået alt det datohalløj på plads :o). Hvis du lægger et svar er der point til dig.
>terry, dit link var meget lærerigt, og er ganske bestemt et nyttigt sted, jeg opretter et spørgsmål med link til dette her , da jeg gerne vil honnorere med lidt point for det gode link, også tak til mugs for indlæg. For god ordens skyld lægger jeg mine versioner af kjulius indlæg som er skrevet direkte i designgitter under datofeltet i de enkelte forsprøgsler:
Denne uge: Between Date()-Weekday(Date();2)+1 And Date()-Weekday(Date();2)+7
Næste uge: Between Date()-Weekday(Date();2)+8 And Date()-Weekday(Date();2)+14
Sidste uge: Between Date()-Weekday(Date();2)-6 And Date()-Weekday(Date();2)
Denne måned: Between Date()-Day(Date())+1 And DateAdd("m";1;Date())-Day(DateAdd("m";1;Date()))
Næste måned: Between DateAdd("m";1;Date())-Day(DateAdd("m";1;Date()))+1 And DateAdd("m";2;Date())-Day(DateAdd("m";2;Date()))
Sidste måned: Between DateAdd("m";-1;Date())-Day(DateAdd("m";-1;Date()))+1 And Date()-Day(Date())
Dette år: Between DateSerial(Year(Date());1;1) And DateSerial(Year(Date())+1;1;1)-1
Næste år: Between DateSerial(Year(Date())+1;1;1) And DateSerial(Year(Date())+2;1;1)-1
Sidste år: Between DateSerial(Year(Date())-1;1;1) And DateSerial(Year(Date());1;1)-1
Jeg har dog lidt svært ved at gennemskue hvorfor Næste måned's syntax er så meget længere en de andre, men det virker :o).
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.