Avatar billede ultra Nybegynder
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!
Avatar billede ultra Nybegynder
15. maj 2003 - 23:18 #1
...ups

to Koloner: AccountReceipts og AccountExpenditure
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:21 #2
Connection.Execute( "INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES('" & Replace(Request.Form("AccountReceipts"),"'","") & "','" & Replace(Request.Form("AccountExpenditure"),"'","") & "')")

er dine kolonner nummer eller tekst?
Avatar billede ultra Nybegynder
15. maj 2003 - 23:22 #3
nummer
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:23 #4
hmm...!

Hvad er problemet med siden?
Avatar billede ultra Nybegynder
15. maj 2003 - 23:25 #5
Jeg får den her fejl meddelse:

Microsoft JET Database Engine error '80040e14'

Syntax error in INSERT INTO statement.
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:27 #6
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...
Avatar billede ultra Nybegynder
15. maj 2003 - 23:30 #7
Det her:

INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(123,112)
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:31 #8
hvad hvis du eksekvere den, skriver den så til databasen ?
Avatar billede ultra Nybegynder
15. maj 2003 - 23:34 #9
nej...
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:35 #10
hmm...!

Det burde ellers virke.!
må jeg se resten af din aspkode ?
Avatar billede ultra Nybegynder
15. maj 2003 - 23:37 #11
<!--#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>
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:39 #12
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...
Avatar billede ultra Nybegynder
15. maj 2003 - 23:53 #13
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"),"'","") & ")")
Avatar billede ellebaek Nybegynder
15. maj 2003 - 23:55 #14
Conn.Execute("INSERT INTO Accounts(AccountReceipts,AccountExpenditure) VALUES(" & Request.Form("AccountReceipts") & "," & Request.Form("AccountExpenditure") & ")")

prøv denne i stedet
Avatar billede ultra Nybegynder
16. maj 2003 - 00:16 #15
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"),"'","''") & "')")
Avatar billede ultra Nybegynder
16. maj 2003 - 00:34 #16
Nogen der kan hjælpe mig med det sidste, på forhånd tak!
Avatar billede ultra Nybegynder
16. maj 2003 - 00:50 #17
ingen :(
Avatar billede ultra Nybegynder
16. maj 2003 - 00:57 #18
Jeg har prøvet alt det jeg kunne men kunne ikke får det til at virke... :(
Avatar billede doc404 Novice
16. maj 2003 - 02:09 #19
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
Avatar billede ellebaek Nybegynder
17. maj 2003 - 15:28 #20
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") & "')")
Avatar billede ellebaek Nybegynder
17. maj 2003 - 15:32 #21
grunden til det ikke virker med den sql du først skrev er at replace kun virker på strenge...

Dvs. at det du har returneret til din database er strenge til alle felter, også dem der er tekst.

Mere info: http://www.devguru.com/technologies/vbscript/quickref/replace.html
Avatar billede ultra Nybegynder
21. maj 2003 - 12:45 #22
Mange 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