![]() |
Datenbank: Paradox • Version: 7 • Zugriff über: TTable und Query
Aus TTable etwas löschen Fehlermeldung für Query
Hallo,
folgendes Problem:
Delphi-Quellcode:
Mein Problem ist, dass ich nach Durchlauf immer ein EDBEngine Error bekomme Meldung: 'ungültiger Parameter'.
if MessageDlg('Wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin Query_Suchen.active := false; // meine such Query deaktivieren Table_Retouren.First; For i:= 1 to Table_Retouren.RecordCount -1 do begin flusher := 0; // flusher ist eine Zahl die im Timer hochgezählt wird um die Datenbank alle zwei minuten mit fluchbuffers zu schreiben. durch das Setzten auf 0 verhindere ich das während dieser for Schleife if Table_RetourenKunde.Value = Edit7.Text then Table_Retouren.Delete else begin if not Table_Retouren.Eof then Table_Retouren.Next; end; end; if Table_RetourenKunde.Value = Edit7.Text then Table_Retouren.Delete //eventuell letzten Datensatz löschen end; Edit7.Text := ''; with Query_Suchen do // Such Query wieder aktivieren begin sql.clear; sql.add('SELECT * FROM retouren'); ParamCheck := true; active := true; open; end; Label43.Caption := IntToStr(Query_Suchen.RecordCount); Leider bin ich mit meinem Latein am Ende und hoffe auf Eure Hilfe. Danke im Voraus Hendrik |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Sorry hatte noch etwas wichtiges vergessen.
Die Table und die Query benutzen die gleiche Datenbank Gruß Hendrik |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Warum löscht du nicht über eine Query? So kannst du durch einen Aufruf alle zu löschenden Datensätze löschen.
Du mußt den (Such-)Query nicht immer neu setzen. Close/Open reicht aus (wenn überhapt nötig) |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Hallo,
dachte eine Query wäre nur zum betrachten. Wie kann ich denn aus der Query mit einem Befehl alle löschen? Die SQL setze ich neu, weil ich vorher ja nach dem Text gesucht habe der im Editfeld7 steht und ich nun wieder alle Datensätze anzeigen möchte. Gruß Hendrik |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Query vorbereiten:
Delphi-Quellcode:
In der Löschschleife dann
loeschQuery.SQL.Text := 'delete from retouren where Kunde = :Kunde';
Delphi-Quellcode:
Nun löscht er alle Datensätze auf die das Kriteriium zutrifft
loeschQuery.paramByName('Kunde').asString := Edit7.Text;
loeschQuery.Execute; |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Danke, dass probiere ich gleich aus. Nur eine Frage noch:
Wird das dann auch in die Datenbank geschrieben, oder verschwindet das nur aus der Ansicht der Query. Muss ich die Table dann Refreschen nach den Löschvorgang? |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Zitat:
Zitat:
|
Re: Aus TTable etwas löschen Fehlermeldung für Query
auch auf die Gefahr hin, dass ich mich ein wenig blöd anstelle:
Delphi-Quellcode:
habe das so versucht, bekomme aber ein Fehler bei EXECSQL der lautet ENoResultSet Fehler beim erstellen des CursorHandles. Die Daten scheinen aber gelöscht zu sein.
if MessageDlg('Wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin with Query_Suchen do begin active := false; sql.clear; sql.add('delete from retouren where Kunde = :Kunde'); ParamCheck := true; ParamByName ('Kunde').AsString := Edit7.Text; active := true; ExecSQL; // Execute kennt er bei mir nicht. Ich glaube das ist aber das gleiche, oder? end; end; Label43.Caption := IntToStr(Query_Suchen.RecordCount); |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Der Fehler kommt nicht beim execSql sondern beim Active
Delphi-Quellcode:
if MessageDlg('Wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin with Query_Suchen do begin sql.Text := 'delete from retouren where Kunde = :Kunde'; ParamCheck := true; ParamByName ('Kunde').AsString := Edit7.Text; ExecSQL; // Execute kennt er bei mir nicht. Ich glaube das ist aber das gleiche, oder? Ja! end; end; Label43.Caption := IntToStr(Query_Suchen.RecordCount); |
Re: Aus TTable etwas löschen Fehlermeldung für Query
Delphi-Quellcode:
Jetz bekomme ich die Meldung: Operation bei geschlossener Datenbank nicht möglich.
if MessageDlg('Wirklich löschen?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin flusher := 0; // verhindern dass durch den Timer die Datenbank geschrieben wird BitBtn6.SetFocus; with Query_Suchen do begin sql.clear; sql.add('delete from retouren where Kunde = :Kunde'); ParamCheck := true; ParamByName ('Kunde').AsString := Edit7.Text; ExecSQL; end; end; Table_Retouren.Refresh; Label43.Caption := IntToStr(Query_Suchen.RecordCount); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz