Avatar billede michaelfp Nybegynder
06. november 2004 - 22:40 Der er 6 kommentarer og
1 løsning

dato problem i sql forespørgsel

Hvorfor virker denne sql streng ikke?

    StrSQL = "SELECT SKonsulenter.Navn, SMødetyper.Beskrivelse, Count(Skandidathistorik.HistorikId) AS Aktiviteter"
    StrSQL = StrSQL & " FROM SMødetyper INNER JOIN (SKonsulenter INNER JOIN Skandidathistorik ON SKonsulenter.KonsulentId = Skandidathistorik.Konsulent) ON SMødetyper.MødeId = Skandidathistorik.Type"
    StrSQL = StrSQL & " WHERE ((Skandidathistorik.Dato)>=" & cdate(Request.form("fdato")) & " And (Skandidathistorik.Dato)<=" & cdate(Request.form("tdato")) & ")"
    StrSQL = StrSQL & " GROUP BY SKonsulenter.Navn, SMødetyper.Beskrivelse"
    StrSQL = StrSQL & " ORDER BY SKonsulenter.Navn, SMødetyper.Beskrivelse"

databasen er access og Skandidathistorik.Dato er short date format
Avatar billede michaelfp Nybegynder
06. november 2004 - 22:43 #1
jeg skal selvfølgelig sige, at det er dato delen som spøger. Med den nuværende sql vises ingenting, hvis jeg erstatter request.form værdierne med konstanter f.eks #06-11-2004# så vises poster, men ikke de rigtige!
Avatar billede Slettet bruger
06. november 2004 - 22:46 #2
Som du jo egentlig også selv skriver så skal der # om datoer, eks

((Skandidathistorik.Dato)>=#" & cdate(Request.form("fdato")) & "# And
Avatar billede michaelfp Nybegynder
06. november 2004 - 22:49 #3
Bertie: Det har jeg prøvet!

    StrSQL = StrSQL & " WHERE ((Skandidathistorik.Dato)>=#" & cdate(Request.form("fdato")) & "# And (Skandidathistorik.Dato)<=#" & cdate(Request.form("tdato")) & "#)"
Avatar billede phineas_phreak Nybegynder
07. november 2004 - 00:06 #4
er det en access database ?

for når du validerer fra en form så skulle jeg mene at du bliver nødt til at formatere dato feltet først således:

nydato = Trim(Request.form("soegeord"))
nydato = Year(strdato) & "-" & Month(strdato) & "-" & Day(strdato)

og så smider du det ind i din SQL
Avatar billede phineas_phreak Nybegynder
07. november 2004 - 00:07 #5
og så skal jeg selvfølgelig lige tage højde for skrivefejl:

strdato = Trim(Request.form("fdato"))
nydato = Year(strdato) & "-" & Month(strdato) & "-" & Day(strdato)

og så skal du bruge nydato variablen i din sql
Avatar billede michaelfp Nybegynder
07. november 2004 - 09:08 #6
Tak phineas phreak - dét var løsningen!

Jeg har lavet en funktion:
  Function Splitdato(d)
    Splitdato = Year(d) & "-" & Month(d) & "-" & Day(d)
  End function

og ændret sql strengen således:

    StrSQL = "SELECT SKonsulenter.Navn, SMødetyper.Beskrivelse, Count(Skandidathistorik.HistorikId) AS Aktiviteter"
    StrSQL = StrSQL & " FROM SMødetyper INNER JOIN (SKonsulenter INNER JOIN Skandidathistorik ON SKonsulenter.KonsulentId = Skandidathistorik.Konsulent) ON SMødetyper.MødeId = Skandidathistorik.Type"
    StrSQL = StrSQL & " WHERE ((Skandidathistorik.Dato)>=#" & splitdato(trim(Request.form("fdato"))) & "# And (Skandidathistorik.Dato)<=#" & splitdato(trim(Request.form("tdato"))) & "#)"
    StrSQL = StrSQL & " GROUP BY SKonsulenter.Navn, SMødetyper.Beskrivelse"
    StrSQL = StrSQL & " ORDER BY SKonsulenter.Navn, SMødetyper.Beskrivelse"

Send et svar. Tak for hlælpen!
Avatar billede phineas_phreak Nybegynder
07. november 2004 - 13:10 #7
det gør jeg så
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
Kurser inden for grundlæggende programmering

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