Avatar billede fastpoint Nybegynder
17. august 2002 - 21:02 Der er 16 kommentarer og
1 løsning

Syntax error

hvis jeg prøver at tilføje en kommentar og bruger ' tegnet eller ¨ og alle de andre tegn så få jeg denne fejl

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression


hvordan fixer jeg dette problem? skal i se noget af mit script eller kan i vise mig et eksempel?
Avatar billede cbp Nybegynder
17. august 2002 - 21:07 #1
Du skal replace ' med '':
Replace(SQL, "'", "''")
Hvor SQL er den streng du bygger din SQL-sætning op i.
Avatar billede fastpoint Nybegynder
17. august 2002 - 21:13 #2
<%
If Trim(Request("ny")) > "" Then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../database.mdb")
Conn.Open

jeg har ikke andet der
Avatar billede fastpoint Nybegynder
17. august 2002 - 21:14 #3
jo og så kommer der dette

if request("ny") = ""

er det den jeg skal ændre ?
Avatar billede cbp Nybegynder
17. august 2002 - 21:56 #4
Nej, det er den streng som du formodentligt bruger som parameter til Execute. Eks. en linie som Conn.Execute(SQL).
Avatar billede fastpoint Nybegynder
17. august 2002 - 22:10 #5
sådan en bruger jeg ikke i dette script.... scriptet skal sådan bare sætte nogen indtastede oplysninger ind i min database... der behøves den nemlig ikke. Kan man ikke gøre noget andet smart?
Avatar billede cbp Nybegynder
17. august 2002 - 23:28 #6
Hvordan indsætter du i din database?
Avatar billede eagleeye Praktikant
18. august 2002 - 13:27 #7
Hvis du bruger SQL INSERT så skal du udskifte et ' med to '' :

ny = replace(Trim(Request("ny")), "'", "''")
SQL = "INSERT INTO tabel (ny_kol) VALUES ('" & ny & "')"
Conn.Execute (SQL)

----
Alternativt hvis du åbner et recordset med adgang til databasen:

rs.Open "SELECT * FROM tabel WHERE ID=0", Conn, 1, 3
rs.Addnew
rs("ny_kol") = Trim(request("ny"))
rs.Update
rs.Close
Avatar billede fastpoint Nybegynder
18. august 2002 - 14:51 #8
jeg bruger denne linie

Conn.Execute "INSERT INTO ny (kommentar, blah, blah.....osv)
Avatar billede eagleeye Praktikant
18. august 2002 - 14:59 #9
Ok, så skal du bruger replace for at lave en ' om til to ''. En ' i SQL er start og slut på en streng i stil med " i VBScript. Hvis man vil gemme en ' i teksten eks. Ole's bil så skal man så inden man gemmer laver en ' om til to '' med Replace.

Så du kan stadig havde dette

If Trim(Request("ny")) > "" Then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../database.mdb")
Conn.Open

'men der hvor du laver din SQL skal du så ændre list så dette kommer med:
ny = replace(Trim(Request("ny")), "'", "''")

Conn.Execute "INSERT INTO ny (kommentar, blah, blah.....osv) VALUE ('" & ny & "', ....osv..)"
Avatar billede fastpoint Nybegynder
18. august 2002 - 17:33 #10
her får du hele du lige resten...

<%
If Trim(Request("ny")) > "" Then
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath ("../database.mdb")
Conn.Open DSN
if request("ny") = "" OR request("ny2") ="" OR request("emne")="" OR request("emne2")="" then
response.write("ALT SKAL UDFYLDES!")
else
Conn.Execute "INSERT INTO ny (ny,email,ny2,emne,emne2,ka,ht,tilf,kl,dato,ip) VALUES ('" & Request("ny") & "','" & Request("email") & "','" & Request("ny2") & "','" & Request("emne") & "','" & Request("emne2") & "','" & Request("ka") & "','0','0','" & time() & "','" & date() & "','" & Request("REMOTE_ADDR") & "')"

Conn.Close: Set Conn = Nothing

  Response.Write "<h1>SENDT!</h1>"
%>


det er nok lidt forvirrende at se på, men hvad skal der ændres?
Avatar billede cbp Nybegynder
18. august 2002 - 17:37 #11
I stedet for request("ny"), Request("email") o.s.v. skal du bruge:
Replace(Request("ny"), "'", "''"), Replace(Request("email"), "'", "''") o.s.v.
Avatar billede fastpoint Nybegynder
18. august 2002 - 17:44 #12
dvs.

('" & Replace(Request("ny"), "'", "''"), Replace(Request("email"), "'", "''"),

?
Avatar billede fastpoint Nybegynder
18. august 2002 - 17:50 #13
jeg kan sgu ikke få det til at fungere... jeg får en syntax fejl
Avatar billede cbp Nybegynder
18. august 2002 - 17:52 #14
Conn.Execute "INSERT INTO ny (ny,email,ny2,emne,emne2,ka,ht,tilf,kl,dato,ip) VALUES ('" & Replace(Request("ny"), "'", "''") & "','" & Replace(Request("email"), "'", "''") & "','" & Request("ny2") & "','" & Request("emne") & "','" & Request("emne2") & "','" & Request("ka") & "','0','0','" & time() & "','" & date() & "','" & Request("REMOTE_ADDR") & "')"


Nu har jeg kun vist Replace på ny og email men det samme skal naturligvis gøre for hvert felt du ønsker at indsætte i.
Avatar billede fastpoint Nybegynder
18. august 2002 - 18:01 #15
den giver stadig en syntax fejl...
Avatar billede cbp Nybegynder
18. august 2002 - 18:07 #16
Prøv at cut'e teksten herfra og paste den ind i din ASP-kode. Koden er korrekt.
Avatar billede fastpoint Nybegynder
18. august 2002 - 18:14 #17
sorry... jeg må jeg overset et , eller lignende... det virker nemlig nu:=) takker!
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