14. juni 2003 - 11:02
Der er
22 kommentarer og 2 løsninger
Fejl i ASP kode?
Hej!! Jeg er igang med at lave et lille script, hvor det skal være muligt at slette en række i Access og opdatere en anden. Altså jeg vil gerne have den til at opdatere "Money" (et felt) i "Community" (en tabel). "Money" skal opdateres med "Total", som er en defination af et lilleregnestykke. Derefter skal den linje med tilhørende ID slettes i Stocks (en tabel)... Jeg kan bare ikke få det til at fungere... Min kode ser sådan ud: <%@ Language=VBScript %> <% If Not Session("login") > 0 Then Response.Redirect("login.asp") %> <% set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};" SQL = "Select * From Stocks Where ID = " & Request("ID") set RS = conn.Execute(SQL) Price = cint(RS("Number")) * cint(RS("BuyValue")) conn.Close set Conn = Nothing Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") & ";UID=admin;PWD=;" Set rs = Server.CreateObject("ADODB.RecordSet") strSQL = "Select * From Community Where ID = "& Session("login") rs.Open strSQL, Conn, adOpenKeyset, adLockOptimistic Total = cdbl(RS("Money")) + cdbl(Price) rs("Username") = rs("Username") rs("Password") = rs("Password") rs("Money") = Total rs.Update rs.Close Set rs = Nothing Conn.Close set Conn = Nothing set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};" SQL = "Delete From Stocks Where ID = " & Request("ID") conn.Execute(SQL) conn.Close set Conn = Nothing %> Håber der er nogen der kan hjælpe mig!
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Uhh jeg har lavet min kode lidt om... Den ser sådan ud nu: <%@ Language=VBScript %> <% If Not Session("login") > 0 Then Response.Redirect("login.asp") %> <% set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};" SQL = "Select * From Stocks Where ID = " & Request("ID") set RS = conn.Execute(SQL) Price = cint(RS("Number")) * cint(RS("BuyValue")) conn.Close set Conn = Nothing Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") & ";UID=admin;PWD=;" SQL = "Select * From Community Where ID = " & Session("login") set RS = conn.Execute(SQL) Total = cdbl(RS("Money")) + cdbl(Price) Conn.Close set Conn = Nothing Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") & ";UID=admin;PWD=;" SQL = "Update Community Set Money = '" & Total & "' Where ID = " & Session("login") conn.Execute(SQL) Conn.Close set Conn = Nothing set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};" SQL = "Delete From Stocks Where ID = " & Request("ID") conn.Execute(SQL) conn.Close set Conn = Nothing %> Men nu får jeg bare en anden fejl: Microsoft OLE DB Provider for ODBC Drivers error '80040e14' [Microsoft][ODBC Microsoft Access Driver] Syntax error in UPDATE statement. /znuggle_com/aktie/sale.asp, line 36 Hvad er nu det?
Endnu en ændrig, beklager: <%@ Language=VBScript %> <% If Not Session("login") > 0 Then Response.Redirect("login.asp") %> <% set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};" SQL = "Select * From Stocks Where ID = " & Request("ID") set RS = conn.Execute(SQL) Price = cint(RS("Number")) * cint(RS("BuyValue")) conn.Close set Conn = Nothing Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") & ";UID=admin;PWD=;" SQL = "Select * From Community Where ID = " & Session("login") set RS = conn.Execute(SQL) Total = cdbl(RS("Money")) + cdbl(Price) Conn.Close set Conn = Nothing Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") & ";UID=admin;PWD=;" SQL = "Update Community Set Money= '" & Total & "' Where ID = " & Session("login") conn.Execute(SQL) Conn.Close set Conn = Nothing set Conn = Server.createobject("adodb.connection") conn.Open "DBQ="& Server.MapPath(".") &"/db.mdb; DefaultDir=DBQ="& Server.MapPath("/") &";Driver={Microsoft Access Driver (*.mdb)};" SQL = "Delete From Stocks Where ID = " & Request("ID") conn.Execute(SQL) conn.Close set Conn = Nothing %> Men stadig samme fejl :(
Hvilken type er Money i din tabel ? teskt eller tal? Hvis det er tal så prøv med denne UPDATE SQL SQL = "Update Community Set Money = " & Total & " Where ID = " & Session("login")
Hmm, det hjalp på en måde... Money (har nu omdøbt den til Cash) var et talfelt, så jeg slettede apostrofferne... Men så hoster den bare op med denne fejlmeddelelse: Microsoft OLE DB Provider for ODBC Drivers error '80040e10' [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. /znuggle_com/aktie/sale.asp, line 36 Og så lige koden: Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("db.mdb") & ";UID=admin;PWD=;" SQL = "Update Community Set Cash= " & Total & " Where ID = " & Session("login") conn.Execute(SQL) Conn.Close set Conn = Nothing
Prøv at lave en response.write af SQL sætningen for det kunne tyde på den mangler en parameter: SQL = "Update Community Set Cash= " & Total & " Where ID = " & Session("login") Response.write SQL Response.End conn.Execute(SQL)
Så skriver den bare SQL linjen. Altså den skriver: Update Community Set Cash= 490000 Where ID = 16 :S
Whee! har fået det til at virke! Kan du ikke lige give et svar, så du kan få points?
Ok ;) Ok ja det set jo helt rigtigt ud. Fejlen betyder nemlig typisk der magler et tal. [Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1 Det kan også betyde at et kolonnenavn i SQL strengen er skrevet forkert. :)
14. juni 2003 - 11:52
#10
Undskyld er ikke helt færdig med dig endnu :P Denne her burde være mindre svær... Jeg vil gerne have ganget Value (et felt) fra Data (tabel) med Number (et felt) fra Stocks (tabel)... Har du en nem måde at gøre det på??
14. juni 2003 - 11:56
#11
Det skulle være muligt, men hvordan hænger de to tabeller sammen for så den tager den rigtige række i Stocks ? er det goså bare ID SQL = "Update Community Set Cash= " & Total & " * stocks.FELT Where Community.ID = " & Session("login") & " AND stocks.id = " & Session("login")
14. juni 2003 - 12:04
#12
Hmm jeg vil gerne have det som en defination... Altså sådan: Total = "..." Lidt indviklet men det, jeg mener, er at den skal kigge i Name (felt) i Data (tabel) efter et navn der matcher StockName (felt) fra Stocks (tabel) med ID: Request("ID") ... Så skal den finde Value (felt) fra Data (tabel) ud fra Name (felt) i Data (tabel)... Håber virkelig du forstår, hvad jeg mener! :D
14. juni 2003 - 12:13
#13
Jeg er ikke helt med på det sidste du skriver. Så data.Name = Stocks.StockName ?
14. juni 2003 - 12:40
#15
Data.Value skal ganges Stocks.Number. For at finde den rigtige række til Data.Value, så skal den være afhængig af Data.Name. Data.Name skal være identisk med et felt i Stocks. Feltet er Stocks.StockName. Stocks.StockName findes ved hjlpe af Stocks.ID, som er lig med Request("ID") ... Håber det er til at forstå
14. juni 2003 - 12:40
#16
hjlpe = hjælp
14. juni 2003 - 12:45
#17
Skal det ind i din update eller skal det være når du udtrælkker? Det bliver eksivs noget med SELECT data.value * stocks.number as tal FROM data INNER JOIN stocks ON data.Name = stocks.StockName WHERE Stocks.ID = " & Request("ID")
14. juni 2003 - 12:50
#18
Jeg skal til 40 års fødselsdag, så jeg er nød til at smutte..
14. juni 2003 - 12:51
#19
Jeg prøver det lige
14. juni 2003 - 12:55
#20
Ok!
14. juni 2003 - 13:51
#21
Hej Eagleeye Hvorfor svare du dog ikke mine mails Mvh Thomas
14. juni 2003 - 13:59
#22
Han er til 40 års føzdag :D
07. juli 2003 - 08:16
#23
Jeg har fundet ud af det... Men tak for hjælpen eagle :)
07. juli 2003 - 08:16
#24
Lukker :)
Kurser inden for grundlæggende programmering