Avatar billede mickill Nybegynder
15. februar 2005 - 10:12 Der er 9 kommentarer og
1 løsning

Fejl i opdatering af database "missing operator"

Hej

Jeg prøver at opdatere en database igennem en formular, men får denne fejl:

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'Invoice_ID ='.

Som jeg umiddelbart kan forstå så betyder fejlen at der ingen værdi er i Invoice_ID, men hvis jeg udskriver sql-strengen så indeholder den en værdi, fjerner jeg så response.write sql så er der ingen værdi ???

Set rsFaktura = Server.CreateObject("ADODB.Recordset")
sql = "Select * From FakturaIndhold Where Invoice_ID = " & Request.Form("fakturanr")
rsFaktura.Open sql, objConn

/Mickill
Avatar billede medions Nybegynder
15. februar 2005 - 10:17 #1
Så får du ikke dit fakturanummer overført... prøv at tjek det efter med Response.Write(Requst.Form("fakturanr"))

//>Rune
Avatar billede eagleeye Praktikant
15. februar 2005 - 10:18 #2
Det lyder lidt for underligt at tallet skulle forsvinde fordi du bruger variablen til at åbne et recordset så hvis du skriver det sådan her er der et tal:

Set rsFaktura = Server.CreateObject("ADODB.Recordset")
sql = "Select * From FakturaIndhold Where Invoice_ID = " & Request.Form("fakturanr")
response.write sql
response.end
rsFaktura.Open sql, objConn
Avatar billede mickill Nybegynder
15. februar 2005 - 10:20 #3
Når jeg udskriver sql strengen første gang er der et tal, men fjerner jeg response.write sql så er der ikke noget tal.

der var også et tal med Response.Write(Requst.Form("fakturanr"))
Avatar billede eagleeye Praktikant
15. februar 2005 - 10:24 #4
Ok, så tjek at din kolonne hedder Invoice_ID, tjek der er skrevet korrekt.

Er det du har vist direkte copy/paste af din kode?
Avatar billede mickill Nybegynder
15. februar 2005 - 10:29 #5
Ja, jeg har tjekket at kolonnen eksisterer og at den er stavet korrekt.

Hele min kode ser således ud.

Henter min værdi herfra:

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("Database\faktura.mdb")

Set rsFaktura = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT Invoice_ID FROM FakturaIndhold Where Invoice_TypeCode = 'PCM'"
rsFaktura.Open strSQL, objConn
%>

<Form action="opdater_kreditnota.asp" method="post">
<table border="0" cellpadding="2" cellspacing="0" align="center">
    <tr>
        <td>
            <select name="fakturanr">
                <% Do While Not rsFaktura.EOF %>
                <option value="<%=rsFaktura("Invoice_ID")%>" ><%=rsFaktura("Invoice_ID")%></option>
                <%
                rsFaktura.MoveNext
                Loop
                %>
            </select>
        </td>
    </tr>
    <tr>
        <td><input type="submit" name="Submit" value="Find Kreditnota"></td>
    </tr>
</table>
</FORM>

Siden med fejl:

<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Driver={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("Database\faktura.mdb")

Dim Opdater
Opdater = Request.QueryString("opdater")

If Opdater = "true" Then

Session("vans") = Request.Form("vans")
Session("fakturanr") = Request.Form("Invoice_ID")

sql1 = "Update FakturaIndhold Set Invoice_ID = " & Session("fakturaNR") & ", Invoice_TypeCode = '" & "PCM" & "', Invoice_IssueDate = '" & Request.Form("Invoice_IssueDate") & "', Invoice_BuyersReferenceID = '" & Request.Form("Invoice_BuyersReferenceID") & "', Invoice_ReferencedOrder_BuyersOrderID = '" & Request.Form("Invoice_ReferencedOrder_BuyersOrderID") & "', Invoice_ReferencedOrder_IssueDate = '" & Request.Form("Invoice_ReferencedOrder_IssueDate") & "', Invoice_BuyerParty_ID = '" & Request.Form("Invoice_BuyersReferenceID") & "', Invoice_BuyerParty_PartyName_Name = '" & Request.Form("Invoice_BuyerParty_PartyName_Name") & "', Invoice_BuyerParty_Address_Street = '" & Request.Form("Invoice_BuyerParty_Address_Street") & "', Invoice_BuyerParty_Address_HouseNumber = '" & Request.Form("Invoice_BuyerParty_Address_HouseNumber") & "', Invoice_BuyerParty_Address_CityName = '" & Request.Form("Bynavn") & "', Invoice_BuyerParty_Address_PostalZone = '" & Request.Form("Postnr") & "', Invoice_BuyerParty_BuyerContact_ID = '" & Request.Form("Invoice_BuyerParty_BuyerContact_ID") & "', Invoice_PaymentMeans_PaymentDueDate = '" & Request.Form("Invoice_PaymentMeans_PaymentDueDate") & "', Invoice_PaymentMeans_PayeeFinancialAccount_ID = '" & Request.Form("Invoice_PaymentMeans_PayeeFinancialAccount_ID") & "', Invoice_PaymentMeans_PayeeFinancialAccount_TypeCode = '" & Request.Form("Invoice_PaymentMeans_PayeeFinancialAccount_TypeCode") & "', Invoice_LegalTotals_LineExtensionTotalAmount = '" & Request.Form("samletpris") & "', Invoice_LegalTotals_ToBePaidTotalAmount = '" & Request.Form("samletpris") & "', InvoiceLine_InvoicedQuantity1 = '" & Request.Form("InvoiceLine_InvoicedQuantity1") & "', InvoiceLine_InvoicedQuantity2 = '" & Request.Form("InvoiceLine_InvoicedQuantity2") & "', InvoiceLine_InvoicedQuantity3 = '" & Request.Form("InvoiceLine_InvoicedQuantity3") & "', InvoiceLine_LineExtensionAmount1 = '" & Request.Form("belob1") & "', InvoiceLine_LineExtensionAmount2 = '" & Request.Form("belob2") & "', InvoiceLine_LineExtensionAmount3 = '" & Request.Form("belob3") & "', InvoiceLine_Item_ItemID = '" & Request.Form("Invoice_InvoiceLine_Item_ItemID") & "', InvoiceLine_Item_Description1 = '" & Request.Form("Invoice_InvoiceLine_Item_Description1") & "', InvoiceLine_Item_Description2 = '" & Request.Form("Invoice_InvoiceLine_Item_Description2") & "', InvoiceLine_Item_Description3 = '" & Request.Form("Invoice_InvoiceLine_Item_Description3") & "', InvoiceLine_BasePrice_PriceAmount1 = '" & Request.Form("belob1") & "', InvoiceLine_BasePrice_PriceAmount2 = '" & Request.Form("belob2") & "', InvoiceLine_BasePrice_PriceAmount3 = '" & Request.Form("belob3") & "' Where Invoice_ID = " & Session("fakturanr")
objConn.Execute sql1
response.redirect "xmlkreditnota1.asp"
End If

Set rsFaktura = Server.CreateObject("ADODB.Recordset")
sql = "Select * From FakturaIndhold Where Invoice_ID = " & Request.Form("fakturanr")
rsFaktura.Open sql, objConn
%>

+ en nedenstående formular, men den er vel ikke relevant i forhold til fejlen ??
Avatar billede eagleeye Praktikant
15. februar 2005 - 10:34 #6
Ja det ser jo fint ud, det jeg tænke på var om du kom til at bruge et variablenavn til sql sætningen og at andet variable navn i rs.Open linjen men det ser jo helt rigtigt ud.

Hvis du som test skriver et tal, giver det så også fejlen?, og Invoice_ID er en tal kolonne?:
sql = "Select * From FakturaIndhold Where Invoice_ID = 4"
Avatar billede mickill Nybegynder
15. februar 2005 - 10:41 #7
Det virker fint hvis jeg skriver et tal i min sql streng.....Måske er det bare en af disse uløselige, underlige, ikke til at opklare fejl ??
Avatar billede eagleeye Praktikant
15. februar 2005 - 10:50 #8
Ja det tror jeg prøv evt at udskrive tallet med server.htmlencode omkring og : omkring for at se der ikke er nogle ekstra karakter som måske kan drille:

Response.write ":"&Server.HTMLencode(Request.Form("fakturanr"))&":"
Avatar billede mickill Nybegynder
15. februar 2005 - 10:55 #9
Har lige prøvet og der er ingen ekstra karater omkring.

Lader spørgsmålet stå lidt endnu, mens jeg prøver noget andet.

Ellers tak for hjælpen.

/Mickill
Avatar billede mickill Nybegynder
15. februar 2005 - 13:59 #10
Problemet har løst sig selv......Hvordan aner jeg ikke, men det virker nu.

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