Probleme beim Löschen von Datensätzen

stud3

Aktives Mitglied
hallo,
bei dem folgenden Code versuche ich nur beim Klicken vom Button "Eintrag löschen" den entsprechenden Datensatz zu löschen, beim Klicken vom Button "Abbrechen" sollte das Popup Fenster geschlossen werden.
Problem: Beim Hinzufügen einer If Bedingung passiert gar nichts, keinen Datensatz gelöscht. Andererseits nur mit der SQL Anweisung ohne If...End If wird der Datensatz gelöscht, ABER auch wenn ich "Abbrechen" klicke, wer bitte kann mir helfen?
sad.gif


<table align=center cellspacing=1 cellpadding=0 width="100%" border=0>
<tr><td height=25 class="headback"><font size=2><b>LU_PRODUKT - EINTRAG LÖSCHEN</b></font></td></tr>
</table>
</div>
<br><br>

<p align="center"><font color="#003366"><b>Soll der Eintrag mit der Produkt_id wirklich gelöscht werden?</b></font></p>
<br>
<p align="center"><input type="submit" name="Löschen" value="Eintrag löschen" style="width:10em"> <input type="submit" value="Abbrechen" style="width:10em" onclick="self.close()" ></p>
<%

Dim Produkt_id
If Request.Form("Löschen") = "Eintrag löschen" Then
Produkt_id = Request("Produkt_id")
SQLquery = "DELETE FROM LU_Produkt WHERE Produkt_id='" & Request("Produkt_id") & "'"
Set objRS = Conn.Execute(SQLquery)
End If

%>
 
Da der Abbrechen-Button ein Submitbutton ist, wird das Formular beim Klicken abgeschickt. Stell den Typ dieses Buttons um von "Submit" auf "Button" und/oder setz ein "return false" hinter das self.close:

<input type="button" value="Abbrechen" style="width:10em" onclick="self.close();return false;">

Und verlange kein Recordset beim Ausführen eines SQL, das keine Datensätze liefert. Das müsste eigentlich einen Fehler geben. Also nur

Conn.Execute(SQLquery)

ohne das Set objRS vornedran.

Griessli
Irene
 
hallo Irene,
danke für den Tip, ich werde es anwenden, ich melde mich mal wieder . Gruß.
 
...ich habe die Änderungen gemacht, aber der Datensatz wird immer noch gelöscht, egal was geklickt wird, weil der Code ja in einer Funktion namens DeleteIt() beinhaltet ist, wo auch die Query Delete... nur das eine macht: Löschen egal was man klickt, Bedingungen zu setzen haben auch nicht funktioniert...

Hier die Änderung:
...
<p align="center"><input type="button" name="Löschen" value="Eintrag löschen" style="width:10em"> <input type="button" value="Abbrechen" style="width:10em" onclick="self.close();return false;"></p>
<%

Dim Produkt_id

Produkt_id = Request("Produkt_id")
SQLquery = "DELETE FROM LU_Produkt WHERE Produkt_id=" & Request("Produkt_id")
Conn.Execute(SQLquery)

%>
....
 
Da muss irgendwas am Javascript nicht stimmen oder sonstwas vom Browser falsch interpretiert werden. Die Anweisung "self.close()" sollte den Browser dazu bewegen, das Fenster zu schliessen - und nichts weiter. Beim Klick auf den Abbrechen-Button dürfte also gar kein Request mehr zum Server geschickt werden, und infolgedessen könnte der Server auch nichts löschen.

Von hier aus kann ich nicht sagen, was der Browser nicht verträgt. Falls der Browser beim Laden der Seite irgendeinen Fehler anzeigt, würd ich den mal zuerst beheben. Ansonsten seh ich nur die Möglichkeit, das Javascript (der besseren Übersichtlichkeit halber) in eine separate Funktion auszulagern und dort zusätzliche Alerts auszugeben. So lässt sich vielleicht die Zeile finden, die das Problem verursacht:

<script language="javascript">
function test(){
alert("1");
self.close();
alert("2");
return false;
}
</script>
<input type="button" value="Abbrechen" style="width:10em" onclick="test();">

Oder wenn das auch nicht hilft, den Button mal testhalber weglassen und dafür einen Link hinsetzen, der das self.close ausführt.

Griessli
Irene
 
Ist es möglich, Ihnen meine Dateien zu posten?, so können Sie eine bessere Übersicht über die Struktur der Codes und den Zusammenhang sehen. Am sonsten kann ich nicht nur ein Teil des Codes zeigen, wenn es von dem Ganzen abhängt. Hier zu erklären wie die Codes aufgebaut sind, fällt mir schwer. Falls nicht, ich würde es verstehen. Gruß.
 
Poste doch einfach den Source der betreffenden Seite hier, natürlich ohne DB-Passwörter ;-)

Griessli
Irene
 
..das Löschen hat schon geklappt. Nach vielen Versuchen habe ich folgenden JavaScript Funktion folgendermaßen implementiert:

function delete_submit(Produkt_id)
{
if (confirm('Soll der Datensatz mit der Produkt_id = ' + Produkt_id + ' wirklich gelöscht werden?')) {
var LeftPosition = (screen.width) ? (screen.width-400)/2 : 0;
var TopPosition = (screen.height) ? (screen.height-100)/2 : 0;
window.open ('change.asp?Produkt_id=' + Produkt_id + '&form_action=del','center','width=400 height=100 top='+TopPosition+' left='+LeftPosition+' ')
}else{
return false;
}
}

und einen Verweis für meinen "Löschen" button hizugefügt:

<a href = "../_rootverzeichnis/LU_Produkt.asp" onclick = "return delete_submit(<%=objRS("Produkt_id")%>);"><input class="klein" type="button" value="Löschen" ></a>


die Datei change.asp selbst hat die entsprechende SQL Anweisung zum Löschen von einem Datensatz und nach der Anzeige der JavaScript Confirm Meldung, wird einfach ein kleines Popup Fenster ganz zentriert im Browser angezeigt.

Alles supi!!, ich danke mir selbst!
 
Zurück
Oben