Avatar billede Slettet bruger
22. november 2006 - 14:14 Der er 15 kommentarer og
1 løsning

Auktions script fra mysql til Access DB

Hey
Jeg har fundet et auktions script, men det køre på en MYSQL DB, og ville derfor lave det om til at køre på en Access DB, men det lykkes dog ikke...
index.asp:
<%
'************************************************'
'*                                              *'
'*                (C) 21/11/2003                *'
'*                      by                    *'
'*                    Shorty                  *'
'*                                              *'
'************************************************'
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("billeder.mdb")
strSQL = "SELECT id, sti, overskrift, tekst, minimum FROM varer"
set rs = Conn.Execute(strSQL)

response.write("<table>")
do while not (rs.Bof or rs.EOF)
  response.write("<tr><td>"& vbcrlf)
  response.write("<img src="""& rs("sti") &""">"& vbcrlf)
  response.write("</td><td>"& vbcrlf)
  response.write("<b>"& rs("overskrift") &"</b><br>"& vbcrlf)
  response.write( rs("tekst") &"<br>Min. bud: "& rs("minimum") & vbcrlf)
  response.write("</td></tr>"& vbcrlf)
  response.write("<tr><td colspan=""2"">"& vbcrlf)
  response.write("<form action=""gembud.asp"" method=""post"">"& vbcrlf)
  response.write("<input type=""hidden"" name=""id"" value="""& rs("id")&""">"& vbcrlf)
  response.write("Email: <input type=""text"" name=""email"">"& vbcrlf)
  response.write("Bud: <input type=""text"" name=""bud"">"& vbcrlf)
  response.write("<input type=""Submit"" value=""Byd!"">"& vbcrlf)
  response.write("<br>"& vbcrlf)
  SQL = "SELECT MAX(bud) as maxbud FROM bud WHERE vare="&rs("id")
  Set rs_bud = conn.execute(strSQL)
  if (rs_bud("maxbud")=NULL) then
    response.write("Højeste bud pt: <b> Indet bud </b>"& vbcrlf)
  else
    response.write("Højeste bud pt: <b> kr. "& rs_bud("maxbud") &"</b>"& vbcrlf)
  end if
 
  response.write("</form>"& vbcrlf)
  response.write("</td></tr>"& vbcrlf)
  rs.movenext
loop
response.write("</table>")

conn.close
%>
gembud.asp
<%
'************************************************'
'*                                              *'
'*                (C) 21/11/2003                *'
'*                      by                    *'
'*                    Shorty                  *'
'*                                              *'
'************************************************'
id = request.form("id")
email = request.form("email")
bud = request.form("bud")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("billeder.mdb")
strSQL = "SELECT overskrift, minimum FROM varer WHERE id = "& id
set rs = Conn.Execute(strSQL)

fejl = false
response.write("<div align=""center"">")
if (email = "") then
  response.write("Du skal skrive en email<br>")
  fejl = true
end if

if (bud < rs("minimum")) then
  response.write("Dit bud er mindere end minimums budet.<br>")
  fejl =  true
end if

if not (fejl) then
  SQL = "SELECT MAX(bud) as maxbud FROM bud WHERE vare = "& id
  Set rs_bud = conn.execute(SQL)
  if ((rs_bud("maxbud")>Clng(bud)) or (rs_bud("maxbud")=Clng(bud))) then
    fejl = true
    response.write("Dit bud er mindere eller lig det højeste bud.<br>")
  end if
end if

if not (fejl) then
  SQL = "INSERT INTO bud (vare,bud,email) VALUES ("&id&","&bud&",'"&email&"')"
  conn.execute(SQL)
  response.write("Du har nu afgivet et bud på: <b>"& bud &"</b> for varen <b>"&rs("overskrift")&"</b>.<br>") 
end if

conn.close
response.write("<a href=""java script:history.go(-1)"">Tilbage</a><br><br><small>&copy; 21/11/2003 by Shorty</small></div>")
%>
på min side får jeg denne fejl:
ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

index.asp, line 31

I min db har jeg en der hedder varer hvor der er felter der hedder
id, sti, overskrift, tekst, minimum, maxbud
i bud står der:
id, email, bud, vare, maxbud

Er der en, der kan hjælpe?
Avatar billede loukas Mester
22. november 2006 - 14:27 #1
Hvad er linie 31?
Prøv at skriv SQL'en ud
Response.Write SQL
Avatar billede Slettet bruger
22. november 2006 - 14:34 #2
linie 31 er: if (rs_bud("maxbud")=NULL) then
Avatar billede ellebaek Nybegynder
22. november 2006 - 15:13 #3
Prøv at lave den linie om til:
linie 31 er: if (rs_bud("maxbud")=NULL) then

if (rs_bud.eof) then

eller alternativt:
if (isNull(rs_bud("maxbud")) then
Avatar billede Slettet bruger
22. november 2006 - 15:21 #4
jeg satte dette if (rs_bud.eof) then i linie 31 men nu får jeg denne fejl:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

index.asp, line 34

linie 34         response.write("Højeste bud pt: <b> kr. "& rs_bud("maxbud") &"</b>"& vbcrlf)
Avatar billede ellebaek Nybegynder
22. november 2006 - 15:31 #5
prøv at rette disse linier:
SQL = "SELECT MAX(bud) as maxbud FROM bud WHERE vare="&rs("id")
Set rs_bud = conn.execute(strSQL)
if (rs_bud("maxbud")=NULL) then
response.write("Højeste bud pt: <b> Indet bud </b>"& vbcrlf)
else
  response.write("Højeste bud pt: <b> kr. "& rs_bud("maxbud") &"</b>"& vbcrlf)
end if

til:
SQL = "SELECT top 1 bud FROM bud WHERE vare="&rs("id") & " ORDER BY bud DESC"
  Set rs_bud = conn.execute(strSQL)
  if (rs_bud.eof) then
    response.write("Højeste bud pt: <b> Indet bud </b>"& vbcrlf)
  else
    response.write("Højeste bud pt: <b> kr. "& rs_bud("bud") &"</b>"& vbcrlf)
  end if
Avatar billede Slettet bruger
22. november 2006 - 15:48 #6
nu får jeg denne fejl
ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

index.asp, line 34

line 34  response.write("Højeste bud pt: <b> kr. "& rs_bud("bud") &"</b>"& vbcrlf)
Avatar billede thesurfer Nybegynder
22. november 2006 - 15:55 #7
rs_bud("bud") skal nok være rs_bud("maxbud")..
Avatar billede Slettet bruger
22. november 2006 - 17:47 #8
Jeg har nu rettet min index.asp så den virker nu... men problemet er gembud.asp den kommer med følgende fejl:

ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

gembud.asp, line 32


line 32 if ((rs_bud("maxbud")>Clng(bud)) or (rs_bud("maxbud")=Clng(bud))) then

Gembud.asp

<%
'************************************************'
'*                                              *'
'*                (C) 21/11/2003                *'
'*                      by                    *'
'*                    Shorty                  *'
'*                                              *'
'************************************************'
id = request.form("id")
email = request.form("email")
bud = request.form("bud")
Set Conn = Server.CreateObject("ADODB.Connection")
conn.open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("billeder.mdb")
strSQL = "SELECT overskrift, minimum FROM varer WHERE id = "& id
set rs = Conn.Execute(strSQL)

fejl = false
response.write("<div align=""center"">")
if (email = "") then
    response.write("Du skal skrive en email<br>")
    fejl = true
end if

if (bud < rs("minimum")) then
    response.write("Dit bud er mindere end minimums budet.<br>")
    fejl =  true
end if

if not (fejl) then
    SQL = "SELECT MAX(bud) as maxbud FROM bud WHERE vare = "& id
    Set rs_bud = conn.execute(strSQL)
    if ((rs_bud("maxbud")>Clng(bud)) or (rs_bud("maxbud")=Clng(bud))) then
        fejl = true
        response.write("Dit bud er mindere eller lig det højeste bud.<br>")
    end if
end if

if not (fejl) then
    SQL = "INSERT INTO bud (vare,bud,email) VALUES ("&id&","&bud&",'"&email&"')"
    conn.execute(SQL)
    response.write("Du har nu afgivet et bud på: <b>"& bud &"</b> for varen <b>"&rs("overskrift")&"</b>.<br>")   
end if

conn.close
response.write("<a href=""java script:history.go(-1)"">Tilbage</a><br><br><small>&copy; 21/11/2003 by Shorty</small></div>")
%>
Avatar billede thesurfer Nybegynder
22. november 2006 - 19:13 #9
Den fortæller dig, at du prøver på at aflæse en kolonne, der ikke eksisterer i databasen..

Du skal lige sikre dig, at alle kolonnerne er der OG at de har samme navne, som i koden..
Avatar billede thesurfer Nybegynder
22. november 2006 - 19:19 #10
Hmm... og dog..

Du bruger jo "MAX(bud) as maxbud".. så der vil være en virtuel kolonnen med navnet "maxbud"..
Avatar billede thesurfer Nybegynder
22. november 2006 - 19:22 #11
En anden ting:
Lav kun 1 kald til recordsettet, per kolonne.. Det gør du ved at putte værdien i variabler:

    Set rs_bud = conn.execute(strSQL)
    if not (rs.bof or rs.eof) then
        dim maxbud
        maxbud = CLng(rs("maxbud"))
        if maxbud > CLng(bud) OR maxbud > CLng(bud) then
...osv..
Avatar billede thesurfer Nybegynder
22. november 2006 - 19:26 #12
Hvis du ikke kan få "MAX(bud) as maxbud" til at virke, kan du prøve med Top.. noget i stil med:

select top 1 bud from bud where id = " & id & " order by bud"

Hvis det giver det laveste bud, bruge "desc" (eller er det "asc"):

select top 1 bud from bud where id = " & id & " order by bud desc"
Avatar billede bobbedude Nybegynder
24. november 2006 - 10:42 #13
top virker ikkke i access mener jeg
Avatar billede thesurfer Nybegynder
24. november 2006 - 10:48 #14
Det er enten TOP ellet LIMIT..
Avatar billede ellebaek Nybegynder
24. november 2006 - 17:38 #15
Top benyttes i access, limit er til mysql :-)
Avatar billede Slettet bruger
29. maj 2011 - 11:57 #16
luk
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