Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Nach leeren Feldern suchen (https://www.delphipraxis.net/96890-nach-leeren-feldern-suchen.html)

Zaebos 1. Aug 2007 11:15

Datenbank: dBase • Zugriff über: BDE

Nach leeren Feldern suchen
 
Hallo nochmal. Hab mich jetzt fast totgesucht nach folgendem:

Ich habe eine Abfrage, die bis (if Query1.Empty) läuft. Es kann jedoch sein, dass in der Datenbank noch leere Felder vorhenden sind, die dann als nächstes angezeigt werden sollen. Also im Prinzip so:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.active:=false;
Query1.sql.text:='SELECT FIRMA,WVZEIT,WVKONTAKT FROM SUCC1 WHERE WVKONTAKT<=:edatum ORDER BY WVKONTAKT DESC';
Query1.ParamByName('edatum').Value := Date();
query1.active:=true;
if Query1.IsEmpty then
begin
//Hier sollten die leeren DS gesucht werden; möglichst mit Table1.Locate=false, falls keine Daten mehr vorhanden sind
end;
end;
Wie suche ich also im Anschluss nach leeren Feldern? Danke schonmal

mkinzler 1. Aug 2007 11:26

Re: Nach leeren Feldern suchen
 
Sind die Felder nur Leer ('') oder echt leer (NULL)?

marabu 1. Aug 2007 12:22

Re: Nach leeren Feldern suchen
 
Hallo,

beim Zugriff auf Datumsfelder unter dBase muss bei LocalSQL mit NULL gearbeitet werden, auch wenn dBase selbst in den meisten Versionen gar keine Null-Werte unterstützt.

Wenn die Sätze ohne Datumsangabe zusammen mit den gefilterten Sätzen in der Ergebnismenge auftauchen sollen, dann muss die Where-Klausel erweitert werden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  with Query1 do
  begin
    Sql.Text := 'SELECT firma, wvzeit, wvkontakt FROM succ1 WHERE wvkontakt <= :edatum '
        + 'OR wvkontakt IS NULL ORDER BY wvkontakt DESC';
    ParamByName('edatum').Value := Date();
    Open;
    while not Eof do
    begin
      if FieldByName('wvkontakt').IsNull
        then { ... }
        else { ... };
      Next;
    end;
    Close;
  end;
end;
Da sich das SQL-Statement nicht ändert, würde ich es nur einmal im OI eintragen.

Grüße vom marabu

Zaebos 1. Aug 2007 13:47

Re: Nach leeren Feldern suchen
 
Danke für den Gedankenstoß :-D

While not is für die Software jedoch etwas zu langsam. Habe mir mit einer SQL-Abfrage und "Is Null" schon selber geholfen.

Vielen Dank meine Lieben :cheers:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:07 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz