Avatar billede nips Nybegynder
08. oktober 2002 - 23:33 Der er 21 kommentarer og
3 løsninger

Underlig fejl?

Jeg får pludeslig følgende fejl uden at jeg har rodet i scriptet eller databasen... Men hvorfor og er der nogen der kender til hvad der skal gøres?

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

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Id ='.
Avatar billede keysersoze Ekspert
08. oktober 2002 - 23:35 #1
formentlig fordi du mangler at indsætte en værdi i ID

prøv at kom med din sql
Avatar billede medions Nybegynder
08. oktober 2002 - 23:35 #2
Omklamre ID med [ og ]

altså

strSQL = "SELECT * FROM tabel WHERE [ID] = 12"

Fejlen opstår pga. ID er et reseveret ord i Access...

//>Rune
Avatar billede eagleeye Praktikant
08. oktober 2002 - 23:37 #3
De betyder du ikke får overført en id til filen som den forvendte

filnavn.asp?id=XXXX          '<--- id=xxx mangler derfor kommer fejlen.

Så vidt jeg kan se er det i en SQL sætning eks på where delen:

... WHERE id = " & Request.querystring("id")

Så bliver det til

... WHERE id = "

Så kommer fejler når man udføre SQL sætningen.
Avatar billede nips Nybegynder
08. oktober 2002 - 23:41 #4
Hvor skal det indsættes?

<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN
Posted = 0

If Len(Trim(Request.Form("Subject"))) = 0 AND Len(Trim(Request.Form("Comment"))) = 0 Then
    strSQL = "SELECT * FROM Forums WHERE (ID = " & Request("ForumID") & ")"
    Set rs = myConn.Execute(strSQL)
    If Not (rs.BOF Or rs.EOF) Then
        intForumID = rs("ID")
        strForum = rs("Forum")
    End If
Else
    strSQL = "INSERT INTO Entries"
    If Len(Trim(Request.Form("MessageId"))) = 0 Then
        strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread)"
        strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "', TRUE);"
        Sql = "Select * from Entries Where Id =" & request("MessageId")
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open Sql, myConn, 3, 3
        rs("lastreply") = now()
        rs.Update
        rs.close
    Else
        tempSQL = "SELECT Subject FROM Entries WHERE (Id = " & Request("MessageId") & ")"
        Set tempRS = myConn.Execute(tempSQL)
        strSQL = strSQL & " (Name, Email, Comment, ForumId, ReplyId, Subject)"
        strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "','" & DBFix(Trim(Request("MessageId"))) & "','" & DBFix(Trim(tempRS("Subject"))) & "' );"
        tempRS.Close
        Sql = "Select * from Entries Where Id =" & request("MessageId")
        Set rs = Server.CreateObject("ADODB.Recordset")
        rs.Open Sql, myConn, 3, 3
        rs("lastreply") = now()
        rs.Update
        rs.close
    End If
    myConn.Execute(strSQL)
    Posted = 1
End If
myConn.Close
%>
Avatar billede eagleeye Praktikant
08. oktober 2002 - 23:43 #5
hvilken linie går det galt i?
Avatar billede nips Nybegynder
08. oktober 2002 - 23:43 #6
21

        rs.Open Sql, myConn, 3, 3
Avatar billede eagleeye Praktikant
08. oktober 2002 - 23:45 #7
Det er så i denne SQL sætning som giver problemmet:

Sql = "Select * from Entries Where Id =" & request("MessageId")

Det kunne tyde på du ikke får overført MessageId til asp filen??
Avatar billede nips Nybegynder
08. oktober 2002 - 23:46 #8
det ved jeg ikke. der har ikke været problemer før nu
Avatar billede eagleeye Praktikant
08. oktober 2002 - 23:50 #9
Kan du se filnanvet i browseren?? så tjek at der står

filnavn.asp?messageId=XXX
Avatar billede keysersoze Ekspert
08. oktober 2002 - 23:51 #10
ikke problemer før nu? hvad har du ændret, lavet eller ikke lavet? ligger det evt et sted vi kan teste og se det?
Avatar billede nips Nybegynder
08. oktober 2002 - 23:51 #11
så skriver den

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

[Microsoft][ODBC Microsoft Access Driver] Extra ) in query expression '(ID = )'.
Avatar billede eagleeye Praktikant
08. oktober 2002 - 23:53 #12
Prøv lige at vis SQL sætnigen lige inden linie 21 som fejler..
Avatar billede nips Nybegynder
08. oktober 2002 - 23:53 #13
dette er linie 20 i scriptet.

        Set rs = Server.CreateObject("ADODB.Recordset")
Avatar billede eagleeye Praktikant
08. oktober 2002 - 23:54 #14
Det skal være linie 19. En linie som starter med

strSQL =
Avatar billede nips Nybegynder
08. oktober 2002 - 23:56 #15
linie 18

strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "', TRUE);"
Avatar billede eagleeye Praktikant
09. oktober 2002 - 00:00 #16
det kan godt være du ikke har rette i koden men der er noget i koden som ikke er heldigt...

Denne if sætning tjekke om messageID er tom:

If Len(Trim(Request.Form("MessageId"))) = 0 Then

inden i then delen laver og udføre du denne SQL sætning:
Sql = "Select * from Entries Where Id =" & request("MessageId")

Så det vil give fejl...

Enten gør du noget som du aldig har gjort før i dit forum eller også er der ændret i koden...
Avatar billede nips Nybegynder
09. oktober 2002 - 00:01 #17
Hvad skal jeg ændre til hvad?
Avatar billede eagleeye Praktikant
09. oktober 2002 - 00:06 #18
Umiddelbart uden at kende noget til resten af koden ... så skal du prøve at udkommentere disse linier inde i denne then del som dette:


  If Len(Trim(Request.Form("MessageId"))) = 0 Then
        strSQL = strSQL & " (Name, Email, Subject, Comment, ForumId, Orgthread)"
        strSQL = strSQL & " VALUES('" & DBFix(Trim(Request.Form("Name"))) & "', '" & DBFix(Trim(Request.Form("Email"))) & "', '" & DBFix(Trim(Request.Form("Subject"))) & "', '" & DBFix(Trim(Request.Form("Comment"))) & "', '" & DBFix(Trim(Request("ForumId"))) & "', TRUE);"
'        Sql = "Select * from Entries Where Id =" & request("MessageId")
'        Set rs = Server.CreateObject("ADODB.Recordset")
'        rs.Open Sql, myConn, 3, 3
'        rs("lastreply") = now()
'        rs.Update
'        rs.close
    Else
       

Resten af koden skal være som før.
Avatar billede nips Nybegynder
09. oktober 2002 - 09:50 #19
det ser ud til at virke, men før stod indlægene i dato orden, det er pludeslig væk nu. Kan det rettes til?
Avatar billede eagleeye Praktikant
09. oktober 2002 - 17:03 #20
Så skal det være i den del af koden som viser posterne.. Du kan tilføje

ORDER BY dato
Avatar billede nips Nybegynder
11. oktober 2002 - 21:44 #21
Hvor skal det indsætte? det skal vel indsætte i ovenstående script?
Avatar billede eagleeye Praktikant
11. oktober 2002 - 21:50 #22
Det skal sættes ind hvor den SQL som udskriver fra databasen.. Så vidt jeg kan se er den kode du har vist en del som opdater databasen med en ny besekd??
Avatar billede wilweb Nybegynder
30. december 2002 - 12:57 #23
nips :> der sker vist ikke mere her! luk venligst spørgsmålet
:> Gizom
Avatar billede medions Nybegynder
04. januar 2003 - 05:26 #24
Thx 4 Poinz

//>Rune
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