Avatar billede -anders- Juniormester
02. september 2004 - 14:26 Der er 6 kommentarer og
1 løsning

Vis poster for næste uge,næste måned,næste år

Hej Eksperter
Nedenstående SQlstreng (skrevet i vba)viser mig alle poster for den aktuelle uge udregnet fra datofeltet "JobDato", dette virker fint:

'Kode'
Function visjobfordenneuge()
Dim denneuge As String
denneuge = "Select * From fssubmenu WHERE (((DatePart(""ww"",[JobDato],2,2))=DatePart(""ww"",Date(),2,2)));"
Form_frmsubmenu.RecordSource = denneuge
End Function

Koden aktiveres ved klik på en knap, kan det lade sig gøre at skrive koden så den viser mig poster for den næste uge ligeledes udregnet på feltet "JobDato" næste måned og næste år, der er så en knap til hver kode på formen.Jeg har forsøgt mig lidt med +1, men lige meget hvor jeg sætter det ind sker der enten ingenting, eller der op fejl. Hvis det IKKE kan lade sig gøre i VBA, er jeg også intresseret i beregnet udtryk i forespørgsler

mvh Anders
02. september 2004 - 14:33 #1
Prøv disse:

Function visjobfornæsteuge()
Dim næsteuge As String
næsteuge = "Select * From fssubmenu WHERE (((DatePart(""ww"",[JobDato],2,2))=DatePart(""ww"",Date()+1,2,2)));"
Form_frmsubmenu.RecordSource = næsteuge
End Function


Function visjobfornæstemåned()
Dim næstemåned As String
næstemåned = "Select * From fssubmenu WHERE MOnth(JobDate) = Month(Dateadd("m", 1, date))"
Form_frmsubmenu.RecordSource = næstemåned
End Function

Function visjobfornæsteår()
Dim næsteår As String
næstemåned = "Select * From fssubmenu WHERE year(JobDate) = Month(Dateadd("yyyy", 1, date))"
Form_frmsubmenu.RecordSource = næsteår
End Function
02. september 2004 - 14:34 #2
Sorry...fejl i den første. Her den rigtige:
Dim næsteuge As String
næsteuge = "Select * From fssubmenu WHERE (((DatePart(""ww"",[JobDato],2,2))=DatePart(""ww"",Date()+7,2,2)));"
Form_frmsubmenu.RecordSource = næsteuge
End Function
02. september 2004 - 14:36 #3
Det går godt...mindre fejl i de 2 andre også.
Bruge disse i stedet:

Function visjobfornæstemåned()
Dim næstemåned As String
næstemåned = "Select * From fssubmenu WHERE MOnth(JobDate) = Month(Dateadd("m", 1, date()))"
Form_frmsubmenu.RecordSource = næstemåned
End Function

Function visjobfornæsteår()
Dim næsteår As String
næstemåned = "Select * From fssubmenu WHERE year(JobDate) = Month(Dateadd("yyyy", 1, date()))"
Form_frmsubmenu.RecordSource = næsteår
End Function

(Jeg skulle lige tage højde for, at når date er indlejret i SQL'en, skal der () efter!)
Avatar billede -anders- Juniormester
02. september 2004 - 14:38 #4
Hej thomas tak for indlæggende, jeg tester lige og vender tilbage om 10 minnutter
Avatar billede -anders- Juniormester
02. september 2004 - 14:44 #5
Hej Thomas, har testet, og det køre perfekt (som sædvanligt :o), så points på er på vej. men lige en enkelt ting, hvorfor +7 for næste uge. og 1 for næste måned og år?
02. september 2004 - 14:53 #6
Det er fordi, at uger er lidt sværrere at arbejde med. Derfor benyttes Datepart til at sammenligne jobdato's ugenr med dags dato + 7 dage

For måneder benyttes funktionen month, hvorved der bare skal lægges 1 til.
Tilsvarende for Year

Jeg ser dog endnu en mulig fejlkilde ved uge- og måned-funktionerne. Og det er, at SQL'en rent faktisk vil kunne returnere poster for samme uge/måned blot i andre år.

Prøv disse i stedet:
Function visjobfornæsteuge()
Dim næsteuge As String
næsteuge = "Select * From fssubmenu WHERE DatePart(""ww"",[JobDato],2,2)=DatePart(""ww"",Date()+1,2,2) And Year(JobDato) = Year(Date()+7);"
Form_frmsubmenu.RecordSource = næsteuge
End Function


Function visjobfornæstemåned()
Dim næstemåned As String
næstemåned = "Select * From fssubmenu WHERE format(JobDato, "yyyymm") = format(Dateadd("m", 1, date()), "yyyymm")"
Form_frmsubmenu.RecordSource = næstemåned
End Function


Function visjobfornæsteår()
Dim næsteår As String
næstemåned = "Select * From fssubmenu WHERE year(JobDato) = Year(Dateadd("yyyy", 1, date()))"
Form_frmsubmenu.RecordSource = næsteår
End Function

NB: Jeg håber ikke, at jeg mangler nogle parenteser??
Avatar billede -anders- Juniormester
02. september 2004 - 14:58 #7
Fint nok tak for forklaring, jeg chekker selv op på paranteserne, det er ikke let med beregninger på datoværdier, det har altid drillet mig meget, i det aktuelle projekt er det dog vigtigt med disse beregninger, da det er et bookingsystem for  musikere, sådan nogen booker typisk job langt ud i fremtiden, endnu engang tak for hjælpen, vi høres jo nok ved :o)

mvh Anders.
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