06. december 2001 - 09:32 Der er 10 kommentarer og
1 løsning

Slet knap efter hver record

Jeg bruger denne løkke til at indsætte alle records i en tabel.

Do
  Response.Write \"<tr>\"
  Response.Write \"<td>\" & rs(\"Navn\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"Ref1\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"Rer2\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"MadeBy\") & \"</td>\"

  rs.MoveNext
Loop While Not rs.EOF

Jeg vil gerne have en SLET-knap ud for hver record, så når jeg trykker på Slet-knappen så slettes aktuelle record.

Tabellen hedder \"Person\" der kan checkes på Feltet \"Navn\" (index/nøgle)

Jeg har brug for noget kode, som indsætter knappen efter hver række, samt et forslag til aktionen for knappen.
Avatar billede nute Nybegynder
06. december 2001 - 10:51 #1
du lager din loop om til dette :

Do
  Response.Write \"<tr>\"
  Response.Write \"<td>\" & rs(\"Navn\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"Ref1\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"Rer2\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"MadeBy\") & \"</td>\"
    Response.Write \"<td><a href=\"\"slet.asp?navn=\" &  rs(\"Navn\") & \"\"\">Slet</a></td></tr>\"
  rs.MoveNext
Loop While Not rs.EOF

deretter oppretter du en fil som du kaller \'slet.asp\', så legger du denne kode inn:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<%
Set Conn = Server.CreateObject(\"ADODB.Connection\")
DSN = \"\" \' DIN DSN
Conn.open DSN

Navn = request.querystring(\"navn\")
if( LEN( Navn ) > 0 ) then
  SQL = \"DELETE FROM Person WHERE Navn = \'\" & Navn & \"\'\"
    Conn.Execute( SQL )
    response.write Navn & \" slettet\"
else
  Response.write \"navn ikke angitt\"
end if
%>
</body>
</html>

/nute
Avatar billede cygnet Praktikant
06. december 2001 - 13:00 #2
Det er nok en god ide at oprette en unikt felt i din database - som du kalder ID og autonummer - for flere kan jo godt hedde det samme navn så skriver du bare

Response.Write \"<td><a href=\"\"slet.asp?id=\" &  rs(\"id\") & \"\"\">Slet</a>\"

Istedet for

Response.Write \"<a href=\"\"slet.asp?navn=\" &  rs(\"Navn\") & \"\"\">Slet</a>\"

Og

SQL = \"DELETE FROM Person WHERE id = \'\" & id & \"\'\"

Istedet for

SQL = \"DELETE FROM Person WHERE Navn = \'\" & Navn & \"\'\"

/cygnet
Avatar billede bidetus Nybegynder
06. december 2001 - 13:06 #3
ikke for at udnytte nute\'s kode, men hvis du laver den fil som nute siger kan det også virke med denne lille ændring i din rutine:

Do
  Response.Write \"<tr>\"
  Response.Write \"<td>\" & rs(\"Navn\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"Ref1\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"Rer2\") & \"</td>\"
  Response.Write \"<td>\" & rs(\"MadeBy\") & \"</td>\"
  Response.Write \"<td><form action=slet.asp><input type=submit value=\"\"  Slet  \"\" navn=\" &  rs(\"Navn\") & \"></form></td></tr>\"
  rs.MoveNext
Loop While Not rs.EOF

håber nu lige det er rigtigt, jeg er lidt træt lige nu så tag højte for småfejl =P
GL med scriptet
ME OUT
Avatar billede nute Nybegynder
06. december 2001 - 13:12 #4
cygnet >> yup...det ville vært det beste, men jeg unnlot å kommentere, for det er så mange her inne som ikke vil endre i sine tabeller ;-)

bidetus >> næææ...jeg synes det er en grim måte å gjøre det på. det er ikkee noe poeng i å opprette et formular for å utføre denne handling. En annen til er at hvis dette skulle gjøres, så skulle man også inn å modifisere den \'slet.asp\' jeg har skrevet. Det er selvfølgelig ingenting galt med ditt forslag, men jeg synes ikek det er særlig pent... :)
06. december 2001 - 13:37 #5
Der er tale om en simpel tabel, hvor alle navne KUN findes en gang. Jeg har haft en ID med Autonummer, men der er slette, idet den er overflødig i denne forbindelse. I skal have tak for jeres input. Jeg vælger at benytte nute\'s løsning, da det er den jeg bedst kan lide.

Takker :-)
Avatar billede bidetus Nybegynder
06. december 2001 - 14:11 #6
nute> det var sådan set bare fordi han sagde en knap =P

men man kan jo godt lave det i css.
Avatar billede nute Nybegynder
06. december 2001 - 14:14 #7
tja...eller med en alminnelig \'button\' ??

Response.Write \"<td><input type=button value=\"\"  Slet  \"\" onclick=location.href=\'slet.asp?navn=\" &  rs(\"Navn\") & \"\'></td></tr>\"

;-)

/nute
 
06. december 2001 - 14:26 #8
Hejsa

Der altså forskel på de to metoder:
Jeg har lavet det således, at efter sletningen køres  RESPONSE.REDIRECT \"SLETOVERSIGT.ASP\" således jeg kommer tilbage til min oversigt.

Når jeg bruger:
Response.Write \"<td><a href=\"\"slet.asp?navn=\" &  rs(\"Navn\") & \"\"\">Slet</a></td></tr>\"
- SÅ OPDATERES MIN LISTE PÅ \"SLETOVERSIGT.ASP\", der sker ingen opdatering af oversigten, når jeg bruger det sidste forslag med en BUTTON

Hvad er da forskellen ?
   
06. december 2001 - 14:31 #9
Der var lidt til tænkeren - her er den specifikke kode, som jeg bruger

Response.Write \"<td><a href=\"\"Slet.asp?navn=\" &  rs(\"Navn\") & \"\"\">Slet</a></td>\"

Response.Write \"<td><input type=button value=\"\"  Slet  \"\" onclick=location.href=\"\"Slet.asp?navn=\" &  rs(\"Navn\") & \"\"\"></td>\"

Når slet.asp køres redirecter jeg tilbage til samme side. Ved øverste er siden optateret, det er den ikke når jeg burger nederste

Hmmm - var det den samme forklaring to gange....
Avatar billede nute Nybegynder
06. december 2001 - 14:32 #10
hmmm....det skal ikke være noe som forhindrer det siste forslag i å fungere...merkelig...

men for ordens skyld. bytt ut denne linje (i slet.asp)

Conn.Execute( SQL )

med denne:

response.write SQL & \"<br>\"

og fjern din response.redirect...hva får du til output ?
06. december 2001 - 14:41 #11
I BEGGE tilfælde får jeg:
DELETE FROM Person WHERE Navn = \'flemming\'
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