Avatar billede iceb1977 Nybegynder
23. maj 2002 - 17:22 Der er 15 kommentarer og
1 løsning

sql fejl ???????

Hej

Jeg er ved at lave et admin modul så admin

kan slette billeder fra en dir og rækker fra

en tabel i en db på samme tid....

Jeg får hele tiden den her fejl :

ADODB.Recordset error '800a0cc1'

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

/flash/adminn/deletion.asp, line 31


KODEN:

slet.asp

<%@ Language=VBScript %>

<html>
<body>

<%



' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * FROM download"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

Do

%>
<form action="deletion.asp" method="Post">
<br>Marker denne boks for at slette ordren<INPUT Type=CheckBox Name="tod" Value="<% = RS("id")%>"><br>

<img src="<% = RS("produktbilledfil")%>"<br>
Produktnavn. <% = RS("produktnavn")%><br>
Fil. <% = RS("produktbilledfil")%><br>
Id. <% = RS("id")%><br>
<%



  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing


%>


KODEN:


deletion.asp


<%


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


strSQL = "SELECT * FROM download WHERE ID="&request.form("tod")&""
'grab the value(s) selected from the checkboxes


Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do


SQL1 = "DELETE FROM download WHERE ID ="&request.form("tod")&""
'grab the value(s) selected from the checkboxes



Set rs = Conn.Execute(SQL1)

'both tables use ID as the key field and both corresponding records are deleted

sm= Server.MapPath("/flash/adminn/")

vari=sm &"\"& rs("produktbilledfil")


'Create the FileSystemObject
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Delete the file
objFSO.DeleteFile vari, True

  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF

Set Conn = Nothing
Conn.Close


%>

<center>Dit valgte indhold er slettet</center>

</body>
</html>


Avatar billede tmceu Praktikant
23. maj 2002 - 17:33 #1
Fejlen betyder at du referer til et felt der ikke findes i dit recordset. Det er lidt svært at se hvor det går galt, da du select'er * og jeg derfor ikke umiddelbart kan se om feltet findes.

Lav en systematisk gennemgang af dine tabeller og sammenlign feltnavne med dem du anvender i scriptet.
Avatar billede tjacob Juniormester
23. maj 2002 - 17:38 #2
Jeg ved ikke om det er Eksperten der har smidt backslashen væk, men denne linie: vari=sm &""& rs("produktbilledfil")
skulle vel være: vari=sm &"\"& rs("produktbilledfil")
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 18:08 #3
ok

1. billederne bliver slettet som er markerede .....

2. det gør det i dben også der er markeret....

3. den er rigtig den sti vari ...

kan det være den kigger noget der allerede er slettet i

tabellen ?
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 18:13 #4
hm den linie der er fejl i er den her .....

vari=sm &"\"& rs("produktbilledfil")
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 18:22 #5
ok nu har jeg fundet ud af hvad der er galt .....

den kan ikke finde den fordi variablen vari henviser til et rs

der lige er slettet og ikke er der jo .. så hvordan kan jeg

omskrive det ?
Avatar billede tmceu Praktikant
23. maj 2002 - 18:30 #6
Lige inden din DELETE SQL flytter du værdien over i en variabel

strFil = rs("produktbilledfil")

Og så erstatter du vari=sm &""& rs("produktbilledfil")

med

vari=sm &""& strFil
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 18:35 #7
nej det har jeg prøvet virker ikke ....

den henviser stadig til noget der er slettet jo ....
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 18:38 #8
har lavet en ny løsning ...

tager nu billedfilnavnet fra min db og putter det i form ....

altså kan det her requestes også når man skal slette filen ...

KODE

slet.asp

<%@ Language=VBScript %>

<html>
<body>

<%



' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * FROM download ORDER BY ID"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

Do

%>
<form action="deletion.asp" method="Post">
<br>Marker denne boks for at slette ordren<INPUT Type=CheckBox Name="tod" Value="<% = RS("produktbilledfil")%>"><br>

<img src="<% = RS("produktbilledfil")%>"<br>
Produktnavn. <% = RS("produktnavn")%><br>
Fil. <% = RS("produktbilledfil")%><br>
Id. <% = RS("id")%><br>
<%



  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing


%>



<br><br>
Udskriv din bestilling <a href="java script: window.print()">her</a>

<br><br><input type="submit" value="Slet det markerede">

<br><br>
Luk dette vindue <a href="java script: self.close()">her</a>

</form>
</table>

KODE:

deletion.asp


<%


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


strSQL = "SELECT * FROM download WHERE produktbilledfil="&request.form("tod")&""
'grab the value(s) selected from the checkboxes


Set rs = Conn.Execute(strSQL)

' Gennemløb Recordset (rs) med en løkke
Do

t= rs("id")

SQL1 = "DELETE FROM download WHERE ID ="& response.write t &""
'grab the value(s) selected from the checkboxes



Set rs = Conn.Execute(SQL1)

'both tables use ID as the key field and both corresponding records are deleted

sm= Server.MapPath("/flash/adminn/")

vari=sm &"\"& request.form("tod")


'Create the FileSystemObject
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Delete the file
objFSO.DeleteFile vari, True

  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF

Set Conn = Nothing
Conn.Close


%>

<center>Dit valgte indhold er slettet</center>

</body>
</html>
Avatar billede tmceu Praktikant
23. maj 2002 - 18:42 #9
Så forstår jeg ikke helt hvad du mener, men hvis det sidste virker for dig, er det også lige meget :-)
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 19:06 #10
ok har lavet lidt om på det og får en ny fejl ....

Det er den her der er fejl i hvad kan der være galt ?

Set rs = Conn.Execute(strSQL)

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/flash/adminn/deletion.asp, line 17

KODE

slet.asp

<%@ Language=VBScript %>

<html>
<body>

<%



' Databaseforbindelse - husk at angive sti til din database
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=" & Server.MapPath("hp.mdb")
Conn.Open DSN

' SQL forespørgsel
strSQL = "Select * FROM download ORDER BY ID"
' Udfør forespørgsel (rs indeholder nu resultatet)
Set rs = Conn.Execute(strSQL)

Do

%>
<form action="deletion.asp" method="Post">
<br>Marker denne boks for at slette ordren<INPUT Type=CheckBox Name="tod" Value="<% = RS("produktbilledfil")%>"><br>

<img src="<% = RS("produktbilledfil")%>"<br>
Produktnavn. <% = RS("produktnavn")%><br>
Fil. <% = RS("produktbilledfil")%><br>
Id. <% = RS("id")%><br>
<%



  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF


' Luk databaseforbindelse
Conn.Close
Set Conn = Nothing


%>



<br><br>
Udskriv din bestilling <a href="java script: window.print()">her</a>

<br><br><input type="submit" value="Slet det markerede">

<br><br>
Luk dette vindue <a href="java script: self.close()">her</a>

</form>
</table>

KODE

deletion.asp

<%


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


' Gennemløb Recordset (rs) med en løkke
Do


strSQL = "DELETE FROM download WHERE produktbilledfil="&request.form("tod")&""
'grab the value(s) selected from the checkboxes

Set rs = Conn.Execute(strSQL)

'both tables use ID as the key field and both corresponding records are deleted


  ' Gå til næste Record i rs
  rs.MoveNext

' Fortsæt indtil rs er gennemløbet (EOF = End Of File)
Loop While Not rs.EOF

Set Conn = Nothing
Conn.Close

sm= Server.MapPath("/flash/adminn/")

vari=sm &"\"& request.form("tod")

'Create the FileSystemObject
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Delete the file
objFSO.DeleteFile vari, True


%>

<center>Dit valgte indhold er slettet</center>

</body>
</html>
Avatar billede tmceu Praktikant
23. maj 2002 - 19:12 #11
Hvis produktbilledfil er tekst, skal det være:

strSQL = "DELETE FROM download WHERE produktbilledfil='" & request.form("tod")& "'"
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 19:18 #12
ja produktbilledfil er image1.jpg og image2.jpg osv ....

nu får jeg den her i stedet ..... hvordan ka det være ?

ADODB.Recordset error '800a0e78'

Operation is not allowed when the object is closed.

/flash/adminn/deletion.asp, line 24
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 19:20 #13
dette er linie 24

  rs.MoveNext
Avatar billede tmceu Praktikant
23. maj 2002 - 19:25 #14
Det er fordi du laver denne

Set rs = Conn.Execute(strSQL)

Dermed kan du ikke lave en movenext, da der ikke er nogen record at flytte til. Du bør i stedet blot lave

Conn.Execute(strSQL)

Du skal faktisk have fjernet din do-loop, da du ikke har noget recordset at bevæge dig rundt i. Di deletion.asp bør se sådan ud:

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


' Gennemløb Recordset (rs) med en løkke


strSQL = "DELETE FROM download WHERE produktbilledfil="&request.form("tod")&""
'grab the value(s) selected from the checkboxes

Conn.Execute(strSQL)

'both tables use ID as the key field and both corresponding records are deleted


Set Conn = Nothing
Conn.Close

sm= Server.MapPath("/flash/adminn/")

vari=sm &"\"& request.form("tod")

'Create the FileSystemObject
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

'Delete the file
objFSO.DeleteFile vari, True


%>

<center>Dit valgte indhold er slettet</center>

</body>
</html>
Avatar billede iceb1977 Nybegynder
23. maj 2002 - 20:29 #15
tak tak nu virker den ......
Avatar billede tmceu Praktikant
23. maj 2002 - 20:51 #16
Det var så lidt :-)
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