15. maj 2003 - 23:16
Der er
20 kommentarer og 2 løsninger
Tilføje data i en db
Hej, ASP Eksperter! :) Jeg har et problem med at tilføje data til en Kolone med Data Type: Number Format: Currency i en Access database SQL ser sådan her ud: Connection.Execute( "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Replace(Request.Form("AccountReceipts"),"'","") & "," & Replace(Request.Form("AccountExpenditure"),"'","") & ")") Nogen der kan hjælpe mig med at løse problemet? På forhånd tak!
Annonceindlæg fra inspirit365
...ups to Koloner: AccountReceipts og AccountExpenditure
Connection.Execute( "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES('" & Replace(Request.Form("AccountReceipts"),"'","") & "','" & Replace(Request.Form("AccountExpenditure"),"'","") & "')") er dine kolonner nummer eller tekst?
hmm...! Hvad er problemet med siden?
Jeg får den her fejl meddelse: Microsoft JET Database Engine error '80040e14' Syntax error in INSERT INTO statement.
sql = "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Request.Form("AccountReceipts") & "," & Request.Form("AccountExpenditure") & ")" response.write sql Prøv lige dette og så skriv hvad du får ud...
Det her: INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(123,112)
hvad hvis du eksekvere den, skriver den så til databasen ?
hmm...! Det burde ellers virke.! må jeg se resten af din aspkode ?
<!--#include file="inc.db.asp"--> <% 'Connection.Execute( "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Replace(Request.Form("AccountReceipts"),"'","") & "," & Replace(Request.Form("AccountExpenditure"),"'","") & ")") sql = "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Request.Form("AccountReceipts") & "," & Request.Form("AccountExpenditure") & ")" %> <!--#include file="inc.db.asp"--> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Tilføjer</title> </head> <body> <% response.write sql 'Response.Redirect "AddAccountForm.asp" %> </body> </html>
går ud fra din fil inc.db.asp indeholder din connection og din str til databasen... str = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") prøv evt. med denne str istedet for den du bruger nu...
Nu får jeg den her fejl meddelse: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement. med den her SQL: Conn.Execute( "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Replace(Request.Form("AccountReceipts"),"'","") & "," & Replace(Request.Form("AccountExpenditure"),"'","") & ")")
Conn.Execute("INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Request.Form("AccountReceipts") & "," & Request.Form("AccountExpenditure") & ")") prøv denne i stedet
Den virker :) Men jeg har også andre felter som ikke er Type number men text, hvordan få jeg den her rettet til så den virker med det andre koloner: PS: Det er kun AccountReceipts og AccountExpenditure der har Data Type: Number alle andre har Data Type: Text Connection.Execute( "INSERT INTO Accounts(AccountVoucher,AccountDate,AccountDescription,AccountNumber,AccountReceipts,AccountExpenditure) VALUES('" & Replace(Request.Form("AccountVoucher"),"'","''") & "','" & Replace(Request.Form("AccountDate"),"'","''") & "','" & Replace(Request.Form("AccountDescription"),"'","''") & "','" & Replace(Request.Form("AccountNumber"),"'","''") & "','" & Replace(Request.Form("AccountReceipts"),"'","''") & "','" & Replace(Request.Form("AccountExpenditure"),"'","''") & "')")
Nogen der kan hjælpe mig med det sidste, på forhånd tak!
Jeg har prøvet alt det jeg kunne men kunne ikke får det til at virke... :(
Du mister hurtigt overblikket, når du gør tingene på den måde - og så opstår sådanne "dumme" fejl. Lav en function som replacer ' med '' - F.eks. sådan: function Fmt(value) Fmt = Replace(value,"'","''") end function ... Lav derefter en sql streng... sql = "INSERT INTO MyTable (Field1,Field2,Field3) VALUES ("_ & Fmt(Data1) & "," _ & Data2 & "," _ & Fmt(Data3) _ & ")" og udfør så tingene... Connection.Execute(sql) Så har du også muligheden for at udskrive din sql streng og se om den nu også er som du tror den er... PS: skrevet efter min aldrende hukommelse og lidt Rioja - så tilgiv fejl og mangler - men håber du forstår meningen
Du kan sagtens bruge den mulighed med replace() på dine strenge, men den virker ikke på tal... Prøv lige denne... Skulle mene den virker! Connection.Execute( "INSERT INTO Accounts(AccountVoucher,AccountDate,AccountDescription,AccountNumber,AccountReceipts,AccountExpenditure) VALUES('" & Replace(Request.Form("AccountVoucher"),"'","''") & "','" & Replace(Request.Form("AccountDate"),"'","''") & "','" & Replace(Request.Form("AccountDescription"),"'","''") & "','" & Replace(Request.Form("AccountNumber"),"'","''") & "','" & Request.Form("AccountReceipts") & "','" & Request.Form("AccountExpenditure") & "')")
Kurser inden for grundlæggende programmering