Avatar billede dtc Nybegynder
29. april 2004 - 09:27 Der er 23 kommentarer og
1 løsning

Syntax error (missing operator) in query expression

Jeg får flg. fejl ved opdatering af min record til min menu!!!
Det har virket - og nu får jeg så denne fejl????

Jeg kan bare ikke gennemskue hvad pokker der kan være galt....

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'Id = , 59''.

/admin/editmenu.asp, line 112
Avatar billede fennec Nybegynder
29. april 2004 - 09:31 #1
der skal ikke være et ","...
Avatar billede fennec Nybegynder
29. april 2004 - 09:35 #2
og den lidt bedre forklaring :o)

i linje 112 kører du en sql sætning. Sikkert noget i denne stil:
conn.execute("select * from xxxx where Id= ,"& DinIdVariable)

fjern komma'et, så skulle det virke.
Avatar billede medions Nybegynder
29. april 2004 - 09:40 #3
Hvis den ikke er lig noget skal du sætte Null ind!

sådan at din query bliver:

INSERT INTO feltnavn (felt) VALUES ( null )

//>Rune
Avatar billede dtc Nybegynder
29. april 2004 - 09:44 #4
Jeg kan bare ikke finde "," i min kode.....jeg kan ikke se hvor pokker den har sneget sig ind!

her er koden:

<%
' *** Edit Operations: declare variables

Dim MM_editAction
Dim MM_abortEdit
Dim MM_editQuery
Dim MM_editCmd

Dim MM_editConnection
Dim MM_editTable
Dim MM_editRedirectUrl
Dim MM_editColumn
Dim MM_recordId

Dim MM_fieldsStr
Dim MM_columnsStr
Dim MM_fields
Dim MM_columns
Dim MM_typeArray
Dim MM_formVal
Dim MM_delim
Dim MM_altVal
Dim MM_emptyVal
Dim MM_i

MM_editAction = CStr(Request.ServerVariables("SCRIPT_NAME"))
If (Request.QueryString <> "") Then
  MM_editAction = MM_editAction & "?" & Request.QueryString
End If

' boolean to abort record edit
MM_abortEdit = false

' query string to execute
MM_editQuery = ""
%>
<%
' *** Update Record: set variables

If (CStr(Request("MM_update")) = "form1" And CStr(Request("MM_recordId")) <> "") Then

  MM_editConnection = MM_golf_STRING
  MM_editTable = "mainmenu"
  MM_editColumn = "Id"
  MM_recordId = "" + Request.Form("MM_recordId") + "'"
  MM_editRedirectUrl = "addmenu.asp"
  MM_fieldsStr  = "textfield|value|checkbox|value|textfield2|value|checkbox2|value|textfield3|value|checkbox3|value|textfield4|value|checkbox4|value|checkbox5|value|textfield5|value"
  MM_columnsStr = "menu|',none,''|aktiv|none,'Y','N'|MENUPUNKT2|',none,''|MENUX|none,'Y','N'|EL|',none,''|ELX|none,'Y','N'|MAIL|',none,''|MAILX|none,'Y','N'|submenu|none,'Y','N'|RAEKKEFOELGE|none,none,NULL"

  ' create the MM_fields and MM_columns arrays
  MM_fields = Split(MM_fieldsStr, "|")
  MM_columns = Split(MM_columnsStr, "|")
 
  ' set the form values
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_fields(MM_i+1) = CStr(Request.Form(MM_fields(MM_i)))
  Next

  ' append the query string to the redirect URL
  If (MM_editRedirectUrl <> "" And Request.QueryString <> "") Then
    If (InStr(1, MM_editRedirectUrl, "?", vbTextCompare) = 0 And Request.QueryString <> "") Then
      MM_editRedirectUrl = MM_editRedirectUrl & "?" & Request.QueryString
    Else
      MM_editRedirectUrl = MM_editRedirectUrl & "&" & Request.QueryString
    End If
  End If

End If
%>
<%
' *** Update Record: construct a sql update statement and execute it

If (CStr(Request("MM_update")) <> "" And CStr(Request("MM_recordId")) <> "") Then

  ' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

  If (Not MM_abortEdit) Then
    ' execute the update
    Set MM_editCmd = Server.CreateObject("ADODB.Command")
    MM_editCmd.ActiveConnection = MM_editConnection
    MM_editCmd.CommandText = MM_editQuery
    MM_editCmd.Execute
    MM_editCmd.ActiveConnection.Close

    If (MM_editRedirectUrl <> "") Then
      Response.Redirect(MM_editRedirectUrl)
    End If
  End If

End If
%>
<%
Dim Recordset1
Dim Recordset1_numRows

Set Recordset1 = Server.CreateObject("ADODB.Recordset")
Recordset1.ActiveConnection = MM_golf_STRING
Recordset1.Source = "SELECT * FROM mainmenu"
Recordset1.CursorType = 0
Recordset1.CursorLocation = 2
Recordset1.LockType = 1
Recordset1.Open()

Recordset1_numRows = 0
%>
<%
'  *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim Recordset1_total
Dim Recordset1_first
Dim Recordset1_last

' set the record count
Recordset1_total = Recordset1.RecordCount

' set the number of rows displayed on this page
If (Recordset1_numRows < 0) Then
  Recordset1_numRows = Recordset1_total
Elseif (Recordset1_numRows = 0) Then
  Recordset1_numRows = 1
End If

' set the first and last displayed record
Recordset1_first = 1
Recordset1_last  = Recordset1_first + Recordset1_numRows - 1

' if we have the correct record count, check the other stats
If (Recordset1_total <> -1) Then
  If (Recordset1_first > Recordset1_total) Then
    Recordset1_first = Recordset1_total
  End If
  If (Recordset1_last > Recordset1_total) Then
    Recordset1_last = Recordset1_total
  End If
  If (Recordset1_numRows > Recordset1_total) Then
    Recordset1_numRows = Recordset1_total
  End If
End If
%>
<%
Dim MM_paramName
%>
<%
' *** Move To Record and Go To Record: declare variables

Dim MM_rs
Dim MM_rsCount
Dim MM_size
Dim MM_uniqueCol
Dim MM_offset
Dim MM_atTotal
Dim MM_paramIsDefined

Dim MM_param
Dim MM_index

Set MM_rs    = Recordset1
MM_rsCount  = Recordset1_total
MM_size      = Recordset1_numRows
MM_uniqueCol = "Id"
MM_paramName = "Id"
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName <> "") Then
  MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
End If
%>
<%
' *** Move To Specific Record: handle detail parameter

If (MM_paramIsDefined And MM_rsCount <> 0) Then

  ' get the value of the parameter
  MM_param = Request.QueryString(MM_paramName)

  ' find the record with the unique column value equal to the parameter value
  MM_offset = 0
  Do While (Not MM_rs.EOF)
    If (CStr(MM_rs.Fields.Item(MM_uniqueCol).Value) = MM_param) Then
      Exit Do
    End If
    MM_offset = MM_offset + 1
    MM_rs.MoveNext
  Loop

  ' if not found, set the number of records and reset the cursor
  If (MM_rs.EOF) Then
    If (MM_rsCount < 0) Then
      MM_rsCount = MM_offset
    End If
    If (MM_size < 0 Or MM_size > MM_offset) Then
      MM_size = MM_offset
    End If
    MM_offset = 0

    ' reset the cursor to the beginning
    If (MM_rs.CursorType > 0) Then
      MM_rs.MoveFirst
    Else
      MM_rs.Close
      MM_rs.Open
    End If
  End If

End If
%>
<%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

  ' walk to the end of the display range for this page
  MM_index = MM_offset
  While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend

  ' if we walked off the end of the recordset, set MM_rsCount and MM_size
  If (MM_rs.EOF) Then
    MM_rsCount = MM_index
    If (MM_size < 0 Or MM_size > MM_rsCount) Then
      MM_size = MM_rsCount
    End If
  End If

  ' if we walked off the end, set the offset based on page size
  If (MM_rs.EOF And Not MM_paramIsDefined) Then
    If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
      If ((MM_rsCount Mod MM_size) > 0) Then
        MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
      Else
        MM_offset = MM_rsCount - MM_size
      End If
    End If
  End If

  ' reset the cursor to the beginning
  If (MM_rs.CursorType > 0) Then
    MM_rs.MoveFirst
  Else
    MM_rs.Requery
  End If

  ' move the cursor to the selected record
  MM_index = 0
  While (Not MM_rs.EOF And MM_index < MM_offset)
    MM_rs.MoveNext
    MM_index = MM_index + 1
  Wend
End If
%>
<%
' *** Move To Record: update recordset stats

' set the first and last displayed record
Recordset1_first = MM_offset + 1
Recordset1_last  = MM_offset + MM_size

If (MM_rsCount <> -1) Then
  If (Recordset1_first > MM_rsCount) Then
    Recordset1_first = MM_rsCount
  End If
  If (Recordset1_last > MM_rsCount) Then
    Recordset1_last = MM_rsCount
  End If
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
%>

<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = -1
Repeat1__index = 0
Recordset1_numRows = Recordset1_numRows + Repeat1__numRows
%>

<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
  MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
  End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
  MM_nextItem = "&" & MM_item & "="
  If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
    MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
  End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
  MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "")  Then
  MM_keepURL  = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
  MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
  If (firstItem <> "") Then
    MM_joinChar = "&"
  Else
    MM_joinChar = ""
  End If
End Function
%>
Avatar billede fennec Nybegynder
29. april 2004 - 09:56 #5
det ligner en fejl i din SQL opbygning (MM_editQuery). Prøv at skrive den ud, inden du kører SQL'en, så vil du sikkert se at der er forkert syntax. Du må så til at køre noget debug på opbygningen, for at finde ud af hvorfor den opstår.....
Avatar billede dtc Nybegynder
29. april 2004 - 09:58 #6
?????? Det siger mig bare ingenting.....
Avatar billede fennec Nybegynder
29. april 2004 - 10:10 #7
Problemet ser ud til at ligge i denne kode (start ca. linje 75):

' create the sql update statement
  MM_editQuery = "update " & MM_editTable & " set "
  For MM_i = LBound(MM_fields) To UBound(MM_fields) Step 2
    MM_formVal = MM_fields(MM_i+1)
    MM_typeArray = Split(MM_columns(MM_i+1),",")
    MM_delim = MM_typeArray(0)
    If (MM_delim = "none") Then MM_delim = ""
    MM_altVal = MM_typeArray(1)
    If (MM_altVal = "none") Then MM_altVal = ""
    MM_emptyVal = MM_typeArray(2)
    If (MM_emptyVal = "none") Then MM_emptyVal = ""
    If (MM_formVal = "") Then
      MM_formVal = MM_emptyVal
    Else
      If (MM_altVal <> "") Then
        MM_formVal = MM_altVal
      ElseIf (MM_delim = "'") Then  ' escape quotes
        MM_formVal = "'" & Replace(MM_formVal,"'","''") & "'"
      Else
        MM_formVal = MM_delim + MM_formVal + MM_delim
      End If
    End If
    If (MM_i <> LBound(MM_fields)) Then
      MM_editQuery = MM_editQuery & ","
    End If
    MM_editQuery = MM_editQuery & MM_columns(MM_i) & " = " & MM_formVal
  Next
  MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId

prøv at lave en response.write MM_editQuery lige efter. Så skulle du gerne få den fulde SQL-sætning.
Avatar billede dtc Nybegynder
29. april 2004 - 11:03 #8
det er godt nok lige lidt over mit niveau endnu....
Kan jeg teste det på en ganske simpel måde?
Avatar billede fennec Nybegynder
29. april 2004 - 11:06 #9
hvis du bare skriver SQL'en ud, og viser mig koden kan jeg sikkert se hvor fejlen er.
Avatar billede fennec Nybegynder
29. april 2004 - 11:08 #10
...og viser mig den... skal det være. Jeg har jo koden :o)
mangler bare SQL'en.
Avatar billede dtc Nybegynder
29. april 2004 - 11:09 #11
Hvordan skriver jeg den ud?????
Avatar billede fennec Nybegynder
29. april 2004 - 11:14 #12
sådan:

MM_editQuery = MM_editQuery & " where " & MM_editColumn & " = " & MM_recordId
'Indsættes her.... ca. linje 105
response.write MM_editQuery 'udskriv MM_editQuery
response.end 'stop vidre kørsel af kode
Avatar billede dtc Nybegynder
29. april 2004 - 11:26 #13
Så skriver den flg.

update mainmenu set menu = 'Åbent hus i Påsken',aktiv = 'N',MENUPUNKT2 = 'åbent',MENUX = 'N',EL = '',ELX = 'N',MAIL = '',MAILX = 'N',submenu = 'N',RAEKKEFOELGE = 6 where Id = , 59'
Avatar billede fennec Nybegynder
29. april 2004 - 11:35 #14
så skal vi lige have MM_recordId ud også.

response.write "sql: "& MM_editQuery & "<br>"
response.write "ID: "& MM_recordId & "<br>"

jeg vil tro at MM_recordId giver noget med ", 56'"
Avatar billede dtc Nybegynder
29. april 2004 - 11:45 #15
så skriver den:

update mainmenu set menu = 'Åbent hus i Påsken',aktiv = 'Y',MENUPUNKT2 = 'åbent',MENUX = 'Y',EL = '',ELX = 'N',MAIL = '',MAILX = 'N',submenu = 'N',RAEKKEFOELGE = 6 where Id = , 59'sql: update mainmenu set menu = 'Åbent hus i Påsken',aktiv = 'Y',MENUPUNKT2 = 'åbent',MENUX = 'Y',EL = '',ELX = 'N',MAIL = '',MAILX = 'N',submenu = 'N',RAEKKEFOELGE = 6 where Id = , 59'
ID: , 59'
Avatar billede fennec Nybegynder
29. april 2004 - 11:55 #16
problemet er i MM_recordId....
skriv lige CStr(Request("MM_recordId")) ud også

response.write "sql: "& MM_editQuery & "<br>"
response.write "ID: "& MM_recordId & "<br>"
response.write "RequestID: "& CStr(Request("MM_recordId")) & "<br>"


fjern "response.write MM_editQuery 'udskriv MM_editQuery"
Avatar billede dtc Nybegynder
29. april 2004 - 11:57 #17
update mainmenu set menu = 'Åbent hus i Påsken',aktiv = 'Y',MENUPUNKT2 = 'åbent',MENUX = 'Y',EL = '',ELX = 'N',MAIL = '',MAILX = 'N',submenu = 'N',RAEKKEFOELGE = 6 where Id = , 59'sql: update mainmenu set menu = 'Åbent hus i Påsken',aktiv = 'Y',MENUPUNKT2 = 'åbent',MENUX = 'Y',EL = '',ELX = 'N',MAIL = '',MAILX = 'N',submenu = 'N',RAEKKEFOELGE = 6 where Id = , 59'
ID: , 59'
RequestID: , 59
Avatar billede fennec Nybegynder
29. april 2004 - 12:25 #18
så er der to fejl.

1. dit MM_recordId som bliver requestet er forkert. Det skal være "59" ikke ", 59". Jeg ved ikke om det er et formfelt på siden før, eller blive indsat i URL'en ved afsendelse fra siden før, men det kan du finde ud af.

2. ca. linje 45:
MM_recordId = "" + Request.Form("MM_recordId") + "'"
Ændres til:
MM_recordId = csrt(Request.Form("MM_recordId"))
Avatar billede dtc Nybegynder
29. april 2004 - 13:11 #19
Den fortsætter med det!!!!

Hvad nu????

Microsoft JET Database Engine error '80040e14'

Syntax error (missing operator) in query expression 'Id = , 59'.

/admin/editmenu.asp, line 114
Avatar billede fennec Nybegynder
29. april 2004 - 13:31 #20
Du har endnu ikke fået fjernet komma'et fra MM_recordId (1. fejl). Vi kan selvfølge snyde lidt, for at løse det....

Rigtig løsning....
Hvis jeg nu læser koden rigtigt, så har du et form felt et eller andet sted på siden før, der hedder "MM_recordId". Der er værdien sat til ", 59". Det skal du have rette til "59"

Snyde løsning...
Avatar billede fennec Nybegynder
29. april 2004 - 13:32 #21
MM_recordId = replace(csrt(Request.Form("MM_recordId")),",","")

kom lige til at trykke på send knappen :o)
Avatar billede dtc Nybegynder
29. april 2004 - 13:42 #22
dette formfelt er det på min editmenu.asp eller min addmenu.asp????
Avatar billede fennec Nybegynder
29. april 2004 - 13:46 #23
Det kan jeg ikke se ud fra koden.
Det er den side som submitter til editmenu.asp. Altså den side du er på lige før du får fejlen. Der er sikkert en knap du trykker på, som sender dig til editmenu.asp.
Avatar billede dtc Nybegynder
29. april 2004 - 23:10 #24
TAK for hjælpen Fennec....det kører nu!!!!
PERFEKT!!!!
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