07. august 2003 - 23:13Der er
11 kommentarer og 1 løsning
Dato i en SQL-sætning
Hej alle Jeg kan simpelthen ikke få nedenstående SQL-sætning til at udskrive noget som helst. hvorfor? Der bruges en Access data.
strSQL = "SELECT kundeId, kundenavn, kontaktperson, telefonnr, dato FROM kunde WHERE dato = #" & Request.QueryString("dato") & "#" Set rsKunde = Conn.Execute(strSQL)
Jeg har forsøgt følgende, som netop udskriver korrekt, men den er ikke dynamisk nok.
strSQL = "SELECT kundeId, kundenavn, kontaktperson, telefonnr, dato FROM kunde WHERE dato = '07-08-2003'" Set rsKunde = Conn.Execute(strSQL)
Har også forsøgt at skrive
... WHERE dato = '#" & Request.QueryString("dato") & "#'" ...
strSQL = "SELECT kundeId, kundenavn, kontaktperson, telefonnr, dato FROM kunde WHERE dato = '" & Request.QueryString("dato") & "'"
og det virker, men kun på dags dato. Hvis jeg kalder siden med dato=08-08-2003 udskrives der intet (der eksisterer dato for 08-08-2003 i db) Men benytter jeg følgende SQL virker det, men den er ikke dynamisk....
strSQL = "SELECT kundeId, kundenavn, kontaktperson, telefonnr, dato FROM kunde WHERE dato = '08-08-2003'"
Det er fodi SQL bruger US/UK dato format, som er yyyy-mm-dd eller mm-dd-yyyy. Så den vil bytte rundt på månede og dag set i forhold til DK dato format.
SQL bruger US/UK format også selvom du køre med DK format på serveren og i selv databasen. Så man er nød til at formatere sine datoer til en af de to når man skal bruge dem via SQL.
Det kan godt være at der er noget om snakke, men det er ikke det der er problemet her, og iøvrigt vel egentlig ikke det jeg spørger om. Når db'en indeholder et felt med en dato hvori der står 08-08-2003, så må
'" & Request.QueryString("dato") & "'"
vel give det samme resultat som
'08-08-2003'
Og det ser ud til at problemet faktisk er cachen i Explorer, der gør det. Men hvis eagleeye kan forklare hvordan man i f.eks. global.asa kan sætte datoformatet for alle sider, eller lign., så skal du få pointene.
Kan du specificere hvad den gør? Kan jeg fx ved at bruge dit forslag med Session.LCID = 1030 øverst på min side bruge mit site på Accessdatabaser og IIS'ere ligegyldigt hvilket sprog de kører?
Ok hvis det er en tekst kolonne skal du bare kunne skrive det samme som der står i databasen og så skal man sætte ' omkring i SQLen.
Session.LCID ændre på servren dato format opsætning. De fleste web-hoteller køre med DK dato format. Hvis man vil køre et andet dot format end det som default er for serveren kan man bruge Session.LCID til at ændre det.
Men hvis det er en tekst kolonne er det ligemeget hvad LCID er sat til så skal den udksrive det som det står i databasen.
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.