Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Aus TTable etwas löschen Fehlermeldung für Query (https://www.delphipraxis.net/64078-aus-ttable-etwas-loeschen-fehlermeldung-fuer-query.html)

GoTo0815 27. Feb 2006 07:12

Datenbank: Paradox • Version: 7 • Zugriff über: TTable und Query

Aus TTable etwas löschen Fehlermeldung für Query
 
Hallo,

folgendes Problem:

Delphi-Quellcode:
 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);
Mein Problem ist, dass ich nach Durchlauf immer ein EDBEngine Error bekomme Meldung: 'ungültiger Parameter'.

Leider bin ich mit meinem Latein am Ende und hoffe auf Eure Hilfe.

Danke im Voraus

Hendrik

GoTo0815 27. Feb 2006 07:16

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

mkinzler 27. Feb 2006 07:19

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)

GoTo0815 27. Feb 2006 07:22

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

mkinzler 27. Feb 2006 07:34

Re: Aus TTable etwas löschen Fehlermeldung für Query
 
Query vorbereiten:
Delphi-Quellcode:
loeschQuery.SQL.Text := 'delete from retouren where Kunde = :Kunde';
In der Löschschleife dann
Delphi-Quellcode:
loeschQuery.paramByName('Kunde').asString := Edit7.Text;
loeschQuery.Execute;
Nun löscht er alle Datensätze auf die das Kriteriium zutrifft

GoTo0815 27. Feb 2006 07:39

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?

mkinzler 27. Feb 2006 07:42

Re: Aus TTable etwas löschen Fehlermeldung für Query
 
Zitat:

Zitat von HendrikSturm
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.

Es wirkt sich auf die Datenbanktabelle aus.
Zitat:

Muss ich die Table dann Refreschen nach den Löschvorgang?
Falls du die Tbale noch für etwas anderes brauchst (Du suche läuft ja über eine Query ab, welche ja hier wieder alle Datensätze anzeigt), Ja.

GoTo0815 27. Feb 2006 07:56

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:
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);
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.

mkinzler 27. Feb 2006 08:02

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);

GoTo0815 27. Feb 2006 09:02

Re: Aus TTable etwas löschen Fehlermeldung für Query
 
Delphi-Quellcode:
 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);
Jetz bekomme ich die Meldung: Operation bei geschlossener Datenbank nicht möglich.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:07 Uhr.
Seite 1 von 2  1 2      

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