Avatar billede kartolux Nybegynder
16. december 2001 - 23:42 Der er 8 kommentarer og
1 løsning

Hvordan er den rigtige syntax for denne sql-sætning?

Test = request.Querystring (\"BlockedEmail\")
TestMode = request.Querystring (\"Mode\")
TestTime = Now()
TestDate = Date()

If Test <> \"\" Then
SQL = \"INSERT INTO [BlockedEmail] (BlockedEmail,Mode,Time,Date) VALUES (\'\" & request.querystring(\"BlockedEmail\") & \"\', \'\"& TestMode &\"\', \'\"& TestTime &\"\', \'\"& TestDate &\"\')\"
      dbConn.execute(sql)
Avatar billede sblar Nybegynder
16. december 2001 - 23:49 #1
Istedet for <request.querystring(\"BlockedEmail\")> kan du vel bare bruge <Test> (den er jo hentet allerede). Så undgår du ihvertfald det problem du givetvis har med dobbelte anførselstegn inde i en streng.
Avatar billede kartolux Nybegynder
17. december 2001 - 00:04 #2
Okay, men den request virker. Det er de andre værdier, det kniber med...

Jeg har fundet ud af noget med # og datofelter. Her er min seneste sql - der heller ikke virker :0(

SQL = \"INSERT INTO [BlockedEmail] (BlockedEmail,Mode,Time,Date) VALUES (\'\" & request.querystring(\"BlockedEmail\") & \"\', \'\" & TestMode &\"\', \'# & TestTime & #\', \'# & TestDate & #\')\"
Avatar billede tmceu Praktikant
17. december 2001 - 08:02 #3
Hvis datatypen i alle ovenstående felter er text, og du har tilladt nullængde værdier i feltet Mode, kan jeg ikke se at den ikke skulle virke.

Du tester imidlertidig kun for om Test er udfyldt, og derfor kan feltet Mode være årsagen, hvis denne ikke findes og du ikke har tilladt nullængde.
Avatar billede kartolux Nybegynder
17. december 2001 - 08:43 #4
Jeg har nu rettet feltet mode, så det tillader nullængder. De to felter BlockedEmail og Mode er tekstfelter. Felterne Time og Date er datofelter.

Den kommer stadig med en \"Syntax i Insert Into sql-sætningen...
Avatar billede sblar Nybegynder
17. december 2001 - 09:01 #5
Problemet skyldes at datoformat er anderledes i SQL. Kopiér følgende ind i et nyt modul.

\' Konverterer en Date til SQL-format
Public Function DateToSQL(tmpDato As Date) As String
    DateToSQL = \"#\" & Format(tmpDato, \"mm\") & \"/\" & Format(tmpDato, \"dd\") & \"/\" & Format(tmpDato, \"yyyy\") & \"#\"
End Function

Erklær din variabel TestDate som streng istedet for DateTime og kald funktionen med TestDate = DateToSQL(Date). Herefter er TestDate formateret korrekt i forhold til SQL datoer.

\' Konverterer en Date til SQL-format
Public Function DateToSQL(tmpDato As Date) As String
    DateToSQL = \"#\" & Format(tmpDato, \"mm\") & \"/\" & Format(tmpDato, \"dd\") & \"/\" & Format(tmpDato, \"yyyy\") & \"#\"
End Function


Du får brug for noget lignende med TestTime, den har jeg ikke lige ved hånden men skriv igen hvis det giver problemer.
Avatar billede sblar Nybegynder
17. december 2001 - 09:02 #6
Ups! Funktionen kom med 2 gange. (klip/klistre fejl).
Avatar billede kartolux Nybegynder
17. december 2001 - 09:07 #7
Undskyld, men det er en Access-database - ændrer det noget?
Avatar billede sblar Nybegynder
17. december 2001 - 09:09 #8
Det regnede jeg også med.
Avatar billede kartolux Nybegynder
16. maj 2002 - 22:25 #9
Lukker - det gik i sig selv...
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