Avatar billede znuggle.com Nybegynder
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!
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 11:13 #1
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?
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 11:18 #2
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 :(
Avatar billede eagleeye Praktikant
14. juni 2003 - 11:19 #3
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")
Avatar billede eagleeye Praktikant
14. juni 2003 - 11:21 #4
Så lige denne liste over reserverede ord og Money er reserveret ord så prøv at sætte [ ] omkring.
http://support.microsoft.com/default.aspx?scid=http://support.microsoft.com:80/support/kb/articles/Q209/1/87.ASP&NoWebContent=1

Og så ' skal fjernes hvis det var et tal felt.
SQL = "Update Community  Set [Money] = '" & Total & "' Where ID = " & Session("login")
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 11:39 #5
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
Avatar billede eagleeye Praktikant
14. juni 2003 - 11:42 #6
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)
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 11:47 #7
Så skriver den bare SQL linjen. Altså den skriver: Update Community Set Cash= 490000 Where ID = 16

:S
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 11:49 #8
Whee! har fået det til at virke! Kan du ikke lige give et svar, så du kan få points?
Avatar billede eagleeye Praktikant
14. juni 2003 - 11:50 #9
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. :)
Avatar billede znuggle.com Nybegynder
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å??
Avatar billede eagleeye Praktikant
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")
Avatar billede znuggle.com Nybegynder
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
Avatar billede eagleeye Praktikant
14. juni 2003 - 12:13 #13
Jeg er ikke helt med på det sidste du skriver.

Så data.Name = Stocks.StockName ?
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 12:25 #14
Jeg prøver lige igen...

Har taget to billeder fra mine to tabeller...
Stocks: http://www.znuggle.com/aktie/Stocks_tabel.JPG
Data: http://www.znuggle.com/aktie/Data_tabel.JPG

Håber det gør det lidt lettere at forstå...
Avatar billede znuggle.com Nybegynder
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å
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 12:40 #16
hjlpe = hjælp
Avatar billede eagleeye Praktikant
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")
Avatar billede eagleeye Praktikant
14. juni 2003 - 12:50 #18
Jeg skal til 40 års fødselsdag, så jeg er nød til at smutte..
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 12:51 #19
Jeg prøver det lige
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 12:55 #20
Ok!
Avatar billede thmi99 Nybegynder
14. juni 2003 - 13:51 #21
Hej Eagleeye

Hvorfor svare du dog ikke mine mails

Mvh Thomas
Avatar billede znuggle.com Nybegynder
14. juni 2003 - 13:59 #22
Han er til 40 års føzdag :D
Avatar billede znuggle.com Nybegynder
07. juli 2003 - 08:16 #23
Jeg har fundet ud af det... Men tak for hjælpen eagle :)
Avatar billede znuggle.com Nybegynder
07. juli 2003 - 08:16 #24
Lukker :)
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