Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ist feldX ein gültiger link auf FeldY (https://www.delphipraxis.net/44841-ist-feldx-ein-gueltiger-link-auf-feldy.html)

glkgereon 25. Apr 2005 18:20

Datenbank: Access • Zugriff über: ADO

ist feldX ein gültiger link auf FeldY
 
hi

sry für den Titel, aber ich hab keine kurze und bessere bezeichnung gefunden :(

also, ich hab in einer datenbank 2 spalten 'id' und 'parentid'.
nun will ich prüfen ob die zahl in parentid in irgendeinem anderen datensatz in id drinsteht, und alle datensätze wo parentid "ins leere geht" löschen.
also will ich einfach alle "falschen" parentids rausfinden...wie geht das?

Delphi-Quellcode:
while GetNextFalsePId do
  begin
  FQuery.SQL.Add('DELETE FROM '+FTable+' WHERE parentid='''+PId+'''');
  FQuery.Open;
  end;

Die Muhkuh 25. Apr 2005 18:23

Re: ist feldX ein gültiger link auf FeldY
 
Eigentlich führt man das mit ExecSQL aus und nicht mit Open, da ja nichts zurückgegeben wird.

Desweiteren rate ich mit parametern zu arbeiten. Such hier ma. Gabs schon genug.

nieurig 25. Apr 2005 18:29

Re: ist feldX ein gültiger link auf FeldY
 
Hi,
ohne auf die Effizienz zu achten, könnte man eine Unterabfrage in diesem Stil losschicken.

SQL-Code:
delete from Tabelle1 where NOT parendID in ( SELECT ID from Tabelle2)
Schönen Abend noch.
Niels

glkgereon 25. Apr 2005 18:32

Re: ist feldX ein gültiger link auf FeldY
 
ahh, genau das suchte ich.
:thumb:

(das man so einfach querys verschachteln kann :gruebel: )

@spider
warum ExecSQL und nicht open?
wo ist der unterschied?

was meinst du mit parametern?

stecke was db's mit delpgi angeht noch in den kinderschuhen, daher bin ich für jeden guten tipp dankbar....

Die Muhkuh 25. Apr 2005 18:44

Re: ist feldX ein gültiger link auf FeldY
 
Zitat:

Zitat von glkgereon
ahh, genau das suchte ich.
:thumb:

(das man so einfach querys verschachteln kann :gruebel: )

@spider
warum ExecSQL und nicht open?
wo ist der unterschied?

was meinst du mit parametern?

ExecSQL ruft man auf, wenn man DELETE, INSERT, UPDATE, etc. benutzt.
Open ruft man auf, wenn man SELECT etc. benutzt, überall wo Daten zurückgegeben werden halt.

Das mit den Parametern:

Delphi-Quellcode:
Query1.SQL.Text := 'SELECT * FROM :table WHERE id = :id';
Query1.ParamByName('table').AsString := 'Tabellenname';
Query1.ParamByName('id').AsInteger := ID;
Dadurch brauchst du dich nicht um die Hochkommas zu kümmern, da dies automatisch gemacht wird

glkgereon 25. Apr 2005 18:46

Re: ist feldX ein gültiger link auf FeldY
 
ahhh....das mit den Parametern scheint ne extrem praktische sache zu sein...

aber was wird denn bei ExecSQL zurückgegeben.

Die Muhkuh 25. Apr 2005 18:49

Re: ist feldX ein gültiger link auf FeldY
 
Zitat:

Zitat von glkgereon
aber was wird denn bei ExecSQL zurückgegeben.

Nichts, das ist es ja ;). Es wird bloß was in der DB rumgemurkst.

Robert_G 25. Apr 2005 20:29

Re: ist feldX ein gültiger link auf FeldY
 
Zitat:

Zitat von Spider
Zitat:

Zitat von glkgereon
aber was wird denn bei ExecSQL zurückgegeben.

Nichts, das ist es ja ;). Es wird bloß was in der DB rumgemurkst.

Wird nicht die Anzahl der vom DML Statement betroffenen Datensätze zurückgegen? Oder habe ich noch ExecuteNonQuery im Kopf? :gruebel:


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