Avatar billede w13 Novice
09. februar 2004 - 20:52 Der er 12 kommentarer og
1 løsning

At slette i en database

-Hvad er der galt i min kode? Hvordan for jeg den til at slette en bestemt "række" i databasen, som har det ID, jeg har overført fra sidste side? Min kode er:

<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/database.mdb")
  Conn.Open strDSN
 
  strSQL = "SELECT * FROM nyhed WHERE id ="& request.querystring("id")
  Set rs = myConn.Execute(strSQL)
 
  response.Write "Nyheden er nu slettet!"
  sql = "DELETE FROM nyhed WHERE id = " & id & "

  'Kald execute for at slette den valgte post
  Conn.Execute(SQL)
%>

-Et eller andet gør jeg i hvert fald galt... Håber, I ka' hjælpe!
W13
Avatar billede eagleeye Praktikant
09. februar 2004 - 20:53 #1
Sådan her:

<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/database.mdb")
  Conn.Open strDSN
 
  response.Write "Nyheden er nu slettet!"
  sql = "DELETE FROM nyhed WHERE id = " & request.querystring("id")

  'Kald execute for at slette den valgte post
  Conn.Execute(SQL)
%>
Avatar billede ellebaek Nybegynder
09. februar 2004 - 20:54 #2
du mangler at definere din id..

Gætter på din sql skal være noget i stilen af:
sql = "delete from nyhed where id = " & request.querystring("id")
Avatar billede eagleeye Praktikant
09. februar 2004 - 20:57 #3
Det er så altid en god ide at validere ID'et , sådan du undgår SQL fejl:

  response.Write "Nyheden er nu slettet!"
  id = request.querystring("id")
  if id<> "" and isNumeric(id) then
    sql = "DELETE FROM nyhed WHERE id = " & id

    'Kald execute for at slette den valgte post
    Conn.Execute(SQL)
  end if


Samt husk altid at lukke for forbindelsen til databasen:

Conn.Execute(SQL)
Conn.Close  'Lukker forbindelsen
Set conn = Nothing
Avatar billede w13 Novice
09. februar 2004 - 20:59 #4
-Taktak, men jeg aner ik' hvor noget af det ska' sættes ind... Hilfe..!
Avatar billede ellebaek Nybegynder
09. februar 2004 - 21:01 #5
du skal bare benytte eagels forslag og så overskrive alt den kode du viste i forvejen.
Avatar billede eagleeye Praktikant
09. februar 2004 - 21:01 #6
I den kode du har vist retter du til:


<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/database.mdb")
  Conn.Open strDSN
 
  response.Write "Nyheden er nu slettet!"
  id = request.querystring("id")
  if id<> "" and isNumeric(id) then
    sql = "DELETE FROM nyhed WHERE id = " & id

    'Kald execute for at slette den valgte post
    Conn.Execute(SQL)
  end if
Conn.Execute(SQL)
Conn.Close  'Lukker forbindelsen
Set conn = Nothing
%>
Avatar billede ellebaek Nybegynder
09. februar 2004 - 21:03 #7
<%
  Set rs = Server.CreateObject("ADODB.RecordSet")
  Set Conn = Server.CreateObject("ADODB.Connection")
  strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db/database.mdb")
  Conn.Open strDSN
 
  id = request.querystring("id")
  if id<> "" and isNumeric(id) then
    sql = "DELETE FROM nyhed WHERE id = " & id
    response.Write "Nyheden er nu slettet!"

    'Kald execute for at slette den valgte post
    Conn.Execute(SQL)
else
response.write "Nyhed med dette id findes ikke"
  end if
Conn.Execute(SQL)
Conn.Close  'Lukker forbindelsen
Set conn = Nothing
%>
Avatar billede eagleeye Praktikant
09. februar 2004 - 21:04 #8
hov jeg fik en linje for meget med. Den sidste linje med
Conn.Execute(SQL)
Slettes :)
Avatar billede w13 Novice
09. februar 2004 - 21:06 #9
Eagleeyes forslag virkede fint... Men det var inden jeg slettede
"Conn.Execute(SQL)"

-Skal den slettes, eller kan jeg lade den være?
Avatar billede eagleeye Praktikant
09. februar 2004 - 21:07 #10
Disse 3 linjer:
Conn.Execute(SQL)
Conn.Close  'Lukker forbindelsen
Set conn = Nothing

Skal være:

Conn.Close  'Lukker forbindelsen
Set conn = Nothing
Avatar billede eagleeye Praktikant
09. februar 2004 - 21:08 #11
Ellers udføres SQL sætningen 2 gange, der sker der i princippet ikke noget ved :)
men hvis der er et forkert ID, får man så en SQL fejl.
Avatar billede ellebaek Nybegynder
09. februar 2004 - 21:08 #12
Dog skal du måske lige rykke
response.write "nyheden er slettet"

ind mellem if isnumering(id) then
og
end if

for hvis id ikke er numerisk så bliver nyheden ikke slettet..
Avatar billede w13 Novice
09. februar 2004 - 21:11 #13
Takker!
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