Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 12:00 Der er 18 kommentarer og
1 løsning

Hjælp med SLET af Recordset!

Er der nogen der kan sige mig hvad jeg gør forkert på denne side her:

Dim ADO_Connection
Dim rsSletMenu
Dim SQL_STRING
Dim DeleteRsNumber

DeleteRsNumber= CLng(Request.QueryString("ID"))

set ADO_Connection = server.Createobject("ADODB.Connection")
ADO_Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database/db.mdb")
set rsSletMenu = server.Createobject("ADODB.Recordset")

SQL_STRING = "Select * from menu WHERE id=" & DeleteRsNumber
rsSletMenu.LockType = 3
rsSletMenu.Open SQL_STRING, ADO_Connection
rsSletMenu.Delete

'response.write "Siden " & rsSletMenu("name") & " er slettet"
'response.redirect "slet_side.asp"
rsSletMenu.close
set rsSletMenu = Nothing
set ADO_Connection = Nothing
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 12:01 #1
Den kommer med fejl i linie 28...
Avatar billede fennec Nybegynder
06. september 2004 - 12:07 #2
Du sletter recorden også prøver du at udskrive den bagefter.... Kan selvfølgelig ikke lade sig gøre. Du skal gemme recorderen i et recordset, også slette fra databasen med din connection i stedet for at bruge recordset til at slette med. Så har du nemlig stadig en kopi af dine data i recordset.

DeleteRsNumber= CLng(Request.QueryString("ID"))

set ADO_Connection = server.Createobject("ADODB.Connection")
ADO_Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database/db.mdb")
set rsSletMenu = server.Createobject("ADODB.Recordset")

SQL_STRING = "Select * from menu WHERE id=" & DeleteRsNumber
rsSletMenu.LockType = 3
rsSletMenu.Open SQL_STRING, ADO_Connection
ADO_Connection.execute("delete from menu WHERE id=" & DeleteRsNumber)

'response.write "Siden " & rsSletMenu("name") & " er slettet"
'response.redirect "slet_side.asp"
rsSletMenu.close
set rsSletMenu = Nothing
set ADO_Connection = Nothing
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 12:33 #3
Den melder nu stadigvæk fejl:
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Der kan ikke slettes fra de angivne tabeller.
/editor/siden_slettet.asp, line 28
Avatar billede fennec Nybegynder
06. september 2004 - 12:51 #4
Så prøv uden et "ADODB.Recordset". Det kan være den ikke er glad for at man blander de to connectionstyper sammen. Dette har jeg i hvert fald brugt mange gange:

set ADO_Connection = server.Createobject("ADODB.Connection")
ADO_Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database/db.mdb")
set rsSletMenu = ADO_Connection.execute("Select * from menu WHERE id=" & DeleteRsNumber)
ADO_Connection.execute("delete from menu WHERE id=" & DeleteRsNumber)

'response.write "Siden " & rsSletMenu("name") & " er slettet"
'response.redirect "slet_side.asp"
rsSletMenu.close
set rsSletMenu = Nothing
set ADO_Connection = Nothing
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:13 #5
Den melder sgu sadig fejl i denne linje her:
ADO_Connection.execute("delete from menu WHERE id=" & DeleteRsNumber)
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:14 #6
Den skriver:
Operation is not allowed when the object is open.
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:15 #7
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Der kan ikke slettes fra de angivne tabeller.
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:18 #8
<%
Dim ADO_Connection
Dim rsSletMenu
Dim SQL_STRING
Dim DeleteRsNumber

DeleteRsNumber = Request.QueryString("id")

set ADO_Connection = server.Createobject("ADODB.Connection")
ADO_Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database/db.mdb")
set rsSletMenu = ADO_Connection.execute("Select * from menu WHERE id=" & DeleteRsNumber)
'rsSletmenu.LockType = 3

ADO_Connection.execute("delete from menu WHERE id=" & DeleteRsNumber)

rsSletMenu.close
set rsSletMenu = Nothing
set ADO_Connection = Nothing
%>
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:20 #9
Det er somom at der er noget galt i denne linje her:
set rsSletMenu = ADO_Connection.execute("Select * from menu WHERE id=" & DeleteRsNumber)
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:37 #10
Har lige prøvet den igen:
<%
Dim ADO_Connection
Dim rsSletMenu
Dim SQL_STRING
Dim DeleteRsNumber

DeleteRsNumber= CLng(Request.QueryString("ID"))
Set ADO_Connection= Server.CreateObject("ADODB.Connection")
ADO_Connection.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database/db.mdb")
Set rsSletMenu= Server.CreateObject("ADODB.Recordset")
SQL_STRING= "SELECT menu.* FROM menu WHERE ID=" & DeleteRsNumber

rsSletMenu.LockType = 3
rsSletMenu.Open SQL_STRING, ADO_Connection
rsSletMenu.Delete

rsSletMenu.Close
Set rsSletMenu= Nothing
Set ADO_Connection= Nothing

Response.Redirect "slet_side.asp"
%>
Avatar billede fennec Nybegynder
06. september 2004 - 13:38 #11
Det fatter jeg ikke... Har for en sikkerhedsskyld lige tjekket med den kode jeg har brugt, og den ser sådan ud:

Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open = "En connection-string"
...
...
if mode="delete" and uID <> "" then
  set oRs = oConn.Execute("select name from GREEN_MeterType where id="& uID)
  oConn.Execute("delete from GREEN_MeterType where id="& uID)
  if not oRs.eof then
    response.write oRs("name") & " has been deleted!!"
  end if
end if

og det er i bund og grund magen til din kode. Det eneste jeg så kan komme på er at du ikke har skriverettigheder til databasen, men så burde den komme med en "access denied" fejl.
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:43 #12
Nej jeg fatter det heller ikke.... tror det er min localhost der er sat forkert op!
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 13:59 #13
Nu har jeg prøvet at hente en kildekode ned som jeg har redigeret i og se lige her:

Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80004005)
[Microsoft][ODBC Microsoft Access-driver] Databasen eller objektet er skrivebeskyttet og kan ikke opdateres.
/editor/menu_page_added.asp, line 21
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 14:13 #14
Hvad nu hvis jeg bruger denne her:
<%
Response.Write "Siden " & ("<b><u>") & Request.Form("name") & ("</u></b>") & " er blevet tilføjet menuen"

Dim Conn
Dim strSQL

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("db.mdb")
Conn.Open DSN

strSQL = "Insert into menu (name) values('" & Request.Form("name") & "')"
Conn.Execute(strSQL)
Conn.Close
Set Conn = Nothing
%>
Avatar billede fennec Nybegynder
06. september 2004 - 14:16 #15
Det er fordi du ikke har skriverettigheder til databasen.

højerklik på mdb filen >> egenskaber >> sikkerhed >> giv "IUSR_maskinnavn" fuld rettighed til filen.

Du kan evt give "Alle" fuld rettighed til filen, men så nedsætter du sikkerheden på filen.

Du burde ikke kunne ændre/indsætte/slette data fra databasen, når det ikke er sat på database filen.
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 14:53 #16
Det hjalp sgu på den... men den er MEGET ustabil!
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 14:54 #17
Fejltype:
Provider (0x80004005)
Uspecificeret fejl
/editor/menu_delete.asp, line 14
Avatar billede fennec Nybegynder
06. september 2004 - 15:09 #18
Det er en fejl, jeg også oplever, når jeg bruger Access derhjemme. Ofte er det fordi jeg ikke har fået lukket min database forbindelse, men den kan godt forkomme alligevel. Jeg har desværre aldrig fundet ud af hvilken indstilling der skal til, for at det virker optimalt, som det gør på webhotellerne. Og jeg har endnu ikke funden en løsning her på E.

Normalt finder jeg mig i problemet, da jeg ved, det ikke opstår, når jeg først har uploaded filerne til webhotellet.
Avatar billede -l_jogge_l- Nybegynder
06. september 2004 - 15:18 #19
Tjaa... hvad kan jeg sige....

www.frip.dk/dominoconsult/menu_edit.asp

Det virker sgu!!!
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