Avatar billede quarkb Nybegynder
14. maj 2015 - 00:38 Der er 5 kommentarer og
1 løsning

Dato sammenligning (SQL)

Jeg er ved at konverter et gammel asp site fra Access database til SQL og er stødt på dette lille problem:

sqlF = "SELECT * FROM [Sygdom] WHERE MedarbejderNr = '" & MedarbejderNr & "' AND TilDen >= #" & FraDen & "# AND TilDen <= #" & TilDen & "# ORDER by FraDen DESC"

Denne sql streng virker fint med Access men SQL giver fejl:
Microsoft OLE DB Provider for SQL Server error '80040e14'

Incorrect syntax near '#'.
Avatar billede claes57 Ekspert
14. maj 2015 - 08:36 #1
Jf http://www.w3schools.com/sql/sql_dates.asp sql bruger ikke # (det er en ren access-ting).
Avatar billede softspot Forsker
14. maj 2015 - 08:42 #2
Det er formatet for "literale" datoer i Access, som er forskellig fra SQL Server. I princippet kan du bare udskifte # med apostrof ('). Du kan dog stadig få noget sjov ud af datoerne (ud over SQL Injection), hvis der ikke er overensstemmelse mellem databasens sprogindstilling og det format som datoen i VBScript har.

Derfor mener jeg, du lige bør prøve, at tage et kig på denne artikel: http://www.eksperten.dk/guide/1250

Det er en introduktion til parameteriseret database-integration i ASP og det bør du overveje at anvende over hele kodebasen, når du alligevel er i gang med, at berøre alt databaserelateret kode.

Metoden frigør dig bla. fra at tænke på "literale" dataformater og bringer dig et STORT skridt videre ift. at sikre dit site mod SQL Injections.
Avatar billede quarkb Nybegynder
14. maj 2015 - 11:18 #3
Hvis jer udskifter # med ' får jeg en ny fejl:
Microsoft OLE DB Provider for SQL Server error '80040e07'

Conversion failed when converting date and/or time from character string.

Datoerne i SQL er med årstal-måned-dag hvor i mod i Access står de med dag-måned-årstal.
Avatar billede softspot Forsker
14. maj 2015 - 14:07 #4
Prøv lige at kigge på den artikel jeg henviste til. Det er en meget bedre måde at håndtere database-integration på.
Avatar billede quarkb Nybegynder
14. maj 2015 - 18:35 #5
Det har du helt sikker ret i, men det er meget lidt jeg laver i asp efterhånden, jeg har bare dette ene site som skal lægges om til SQL, så for ikke at skulle rette alt for meget, vil jeg gerne hvis det var muligt uden alt for meget om kodning.
Avatar billede quarkb Nybegynder
15. maj 2015 - 09:50 #6
Jeg har fundet en løsning som ikke giver alt for meget ændring af kode:

FraDen = Year(FraDen) & "-" & right("0"&Month(FraDen),2) & "-" & right("0"&Day(FraDen),2)
TilDen = Year(TilDen) & "-" & right("0"&Month(TilDen),2) & "-" & right("0"&Day(TilDen),2)

sqlF = "SELECT * FROM [Sygdom] WHERE MedarbejderNr = '" & MedarbejderNr & "' AND TilDen >= '" & FraDen & "' AND TilDen <= '" & TilDen & "' ORDER by FraDen DESC"

Ovenstående giver mig det ønskede resultat.

Tak for jeres hjælp.
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

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