Avatar billede desd Nybegynder
22. juli 2003 - 13:07 Der er 11 kommentarer og
1 løsning

database problemmer igen igen

Hejsa igen igen :-)

Har igen et problem, denne gang et lidt andet... har følgende kode:

<%
If Request.QueryString("delete") > 0 Then
   
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(strDBDir)
strSQL = "select * from login"
set rs = myConn.Execute(strSQL)

rs.Open "SELECT * FROM login WHERE id=" & Request.QueryString("delete") & ", conn,1,3"
rs.Delete
   
rs.Update
rs.Close

set rs = nothing
conn.close
set conn = nothing
   
Response.Redirect(admUserDatabase.asp)
   
Else
%>

og har så et stykke længere nede:

<%
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(strDBDir)
strSQL = "select * from login"
set rs = myConn.Execute(strSQL)
%>
<% Do While not rs.EOF %>
<tr>
  <td align="left" valign="middle" width="33%">
    <input name="ID" type="hidden" value="<% Response.Write(rs("ID")) %>">
    <input name)"UserID" size="30" value="<% Response.Write(rs("UserID")) %>"></td>
  <td align="left" valign="middle" width="33%">
    <input name="UserPass" style="text-align:center;" size="30" value="<% Response.Write(rs("UserPass")) %>"></td>
  <td align="right" valign="middle" width="33%">
    <input name="AccessLevel" style="text-align:right;" size="27" value="<% Response.Write(rs("AccessLevel")) %>">&nbsp;<a href="admUserDatabase.asp?delete=<% Response.Write(rs("id")) %>"><img alt="Delete User!" border="0" src="imgs/icon_trashcan.gif"></a></td>
</tr>
<%
rs.MoveNext
loop
%>

Får nu følgende fejltype:

Fejltype:
ADODB.Recordset (0x800A0E79)
Handlingen er ikke tilladt, mens objektet er åbent.

Nogen der har nogen idéer til hvordan jeg kan rette det...?

Hvis I altså kan følge hvad jeg har skrevet, er ved at være ret træt nu her... ;-)
Avatar billede medions Nybegynder
22. juli 2003 - 13:09 #1
Prøv at luk Access ned! Access må ikke være åben når du kører scriptet!

//>Rune
Avatar billede henrik_bs Nybegynder
22. juli 2003 - 13:11 #2
du skal lukke MyConn og ikke Conn
Avatar billede medions Nybegynder
22. juli 2003 - 13:13 #3
Prøv at fjern disse 2 linjer:

conn.close
set conn = nothing

//>Rune
Avatar billede desd Nybegynder
22. juli 2003 - 13:17 #4
Hmmm, har ikke access åben. Prøvede den lille fejl med myConn istedet for conn, hvilket gav det samme... har også prøvet at fjerne de 2 linier.... stadig det samme :-(
Avatar billede fixxxer Nybegynder
22. juli 2003 - 13:17 #5
Hvis du er i design-time i Access på den tabel din side arbejder med, kan du ikke læse og skrive i tabellen.
Avatar billede desd Nybegynder
22. juli 2003 - 13:23 #6
hmm har prøvet at lave det lidt om...

<%
If Request.QueryString("delete") > 0 Then
   
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(strDBDir)
strSQL = "SELECT * FROM login WHERE id=" & Request.QueryString("delete") & ", conn,1,3"
set rs = myConn.Execute(strSQL)

rs.Open
rs.Delete
   
rs.Update
rs.Close

set rs = nothing
myConn.close
set myConn = nothing
   
Response.Redirect(admUserDatabase.asp)
   
Else
%>


Får nu følgende fejl :

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl, fordi der mangler et komma. i forespørgselsudtrykket "id=4, conn,1,3".

anyone?
Avatar billede eagleeye Praktikant
22. juli 2003 - 13:28 #7
Du har blandet to ting samme rs.Open og Set rs = Conn.execute

Prøv at lave disse to:
strSQL = "SELECT * FROM login WHERE id=" & Request.QueryString("delete") & ", conn,1,3"
set rs = myConn.Execute(strSQL)

Om til dette da det med ,1,3 kun bruges sammen med rs.Open:

strSQL = "SELECT * FROM login WHERE id=" & Request.QueryString("delete")
set rs = myConn.Execute(strSQL)
Avatar billede desd Nybegynder
22. juli 2003 - 13:34 #8
ok, har nu prøvet følgende:

<%
    If Request.QueryString("delete") > 0 Then
   
    Set myConn = Server.CreateObject("ADODB.Connection")
    myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(strDBDir)
    strSQL = "SELECT * FROM login WHERE id=" & Request.QueryString("delete")
    set rs = myConn.Execute(strSQL)
    rs.Delete
   
    rs.Update
    rs.Close

    set rs = nothing
    myConn.close
    set myConn = nothing
   
    Response.Redirect(admUserDatabase.asp)
   
    Else
%>

Og får nu følgende fejl:

Fejltype:
ADODB.Recordset (0x800A0CB3)
Det aktuelle postsæt understøtter ikke opdatering. Det kan skyldes en begrænsing af provideren eller den markerede låsetype.
/AM/admUserDatabase.asp, line 14

Line 14 = rs.Delete

???
Avatar billede eagleeye Praktikant
22. juli 2003 - 13:34 #9
Det du vil er at slette en record i din tabel, så bruge DELETE i SQLen istedet for så koden bliver:


<%
If Request.QueryString("delete") > 0 Then
   
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath(strDBDir)
strSQL = "DELETE FROM login WHERE id=" & Request.QueryString("delete")
myConn.Execute(strSQL)

myConn.close
set myConn = nothing
   
Response.Redirect("admUserDatabase.asp")
   
Else
%>
..som før..
Avatar billede desd Nybegynder
22. juli 2003 - 13:36 #10
Ville man ikke kunne skrive noget ligende:

strSQL = "DELETE * FROM login WHERE id=" & Request.QueryString("delete")

??
Avatar billede desd Nybegynder
22. juli 2003 - 13:36 #11
Wheee nu virker det, takker Eagleeye!!!!!
Avatar billede fixxxer Nybegynder
22. juli 2003 - 13:37 #12
uden * :)
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