Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Löschen eines bestimmten Datensatzes! (https://www.delphipraxis.net/78793-loeschen-eines-bestimmten-datensatzes.html)

Pepsen 11. Okt 2006 08:37

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

Löschen eines bestimmten Datensatzes!
 
Morgen!

hab mal wieder ein kleines Problem!
ich will aus meiner Datenbank einen bestimmten Datensatz mit Angabe der Indexnummer löschen. Die Indexnummer ist bei mir rownr und ich hab es erstmal so versucht:

Delphi-Quellcode:
query1.RecNo := rownr;
  query1.SQL.Clear;
  query1.SQL.add('DELETE * FROM addyDB WHERE rownr');
  query1.ExecSQL;
  query1.RequestLive := true;
der Fehler liegt beim Selektieren mit der WHERE-Anweisung oder? Nur was fehlt da und geht das überhaupt?

marabu 11. Okt 2006 08:49

Re: Löschen eines bestimmten Datensatzes!
 
Hi,

Indexnummer ist leider kein besonders aussagefähiger Begriff. Wenn du SQL zum Löschen verwendest, dann verwendest du in der Regel den Primärschlüssel zur Identifizierung des korrekten Datensatzes. Wenn der Primärschlüssel ROWNR heißen sollte, dann könnte das so aussehen:

Delphi-Quellcode:
procedure TForm1.DeleteRecord(rownr: Integer);
begin
  with Query1 do
  begin
    SQL.Text('DELETE FROM addyDB WHERE rownr = :rownr');
    Params.ParamByName('rownr').AsInteger := rownr;
    ExecSQL;
  end;
end;
Grüße vom marabu

Pepsen 11. Okt 2006 09:50

Re: Löschen eines bestimmten Datensatzes!
 
hmmm...
hätt da wohl ncoh was erwähnen sollen....und zwar lass ich mir die Datenbank in einen Stringgrid ausgeben! Ermittle dann mit SelectCell die Zeile, was dann das rownr ist!
über einen ButtonClick sollte dann der Datensatz gelöscht werden, den ich in den StringGrid makiert hab! Mit TTable war das kein Problem! Da hatte ich es immer einfach so gelöst:

Delphi-Quellcode:
procedure TForm1.ButtonLoeschenClick(Sender: TObject);

begin
  table1.RecNo := rownr;
  table1.Delete;
end;
und
Delphi-Quellcode:
SQL.Text('DELETE FROM addyDB WHERE rownr = :rownr');
funktioniert so nicht, weil SQL.Text keinen Parameter verlangt.

mkinzler 11. Okt 2006 09:57

Re: Löschen eines bestimmten Datensatzes!
 
Dir Parameter findes du unter .Params, aber du mußt über über den Primärschlüssel gehen, da du auf die RecNo über SQL nicht zugreifen kannst.

Pepsen 11. Okt 2006 10:02

Re: Löschen eines bestimmten Datensatzes!
 
so ein mist aber auch...
danke für die Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:10 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