02. september 2004 - 14:26Der 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
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
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
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!)
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?
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??
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.
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.