Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi QUERY - Spalte einer Tabelle leer? (https://www.delphipraxis.net/14565-query-spalte-einer-tabelle-leer.html)

trialfreak 11. Jan 2004 16:59


QUERY - Spalte einer Tabelle leer?
 
Hallo,
angenommen ich habe eine Tabelle mit 3 Spalten:

Wie kann ich möglichst einfach feststellen ob eine gesamte Spalte der Tabelle leer ist (WERT NIL bzw. NULL)?

Über Hilfe würde ich mich freuen :)

Ciao,
Christian

r_kerber 11. Jan 2004 17:45

Re: QUERY - Spalte einer Tabelle leer?
 
Hallo trialfreak,

probiere es mal so:
SQL-Code:
SELECT *
FROM Customer
WHERE (InvoiceDate IS NULL);

trialfreak 11. Jan 2004 17:52

Re: QUERY - Spalte einer Tabelle leer?
 
Hallo,
danke für Deine Antwort :)

Habe leider vergessen zu erwähnen, dass mit Tabelle die Rückgabe eines komplexeren Queries gemeint ist, welches mit Hilfe temporärer Tabellen das Fehlen von "SubSelects" unter mySQL ausmerzen soll.
Die Ergebnisse werden also zunächst in eine temporäre Tabelle geschrieben, die dann ganz normal mit SELECT * from temp_table ausgelesen wird.

Die Rückgabe des Queries könnte dann z.B. so aussehen (Werte sind nur zur Veranschaulichung):

SPALTE1 - SPALTE2 - SPALTE3
dsfsdfs - ewrewrw - jhjf
ffdfeee - ewewewe -
dsfwe - weewe - dfd

oder so:

SPALTE1 - SPALTE2 - SPALTE3
dsdsads - asdasda -
asdasdd - sddeeff -

(Blöde Darstellung, sorry)

Ich möchte nun unter Delphi gucken, ob die gesamte 3. Spalte der Ergebnismenge leer ist.

Falls ich mich blöd ausgedrückt habe, kann ich das gerne nochmal näher erläutern...

Robert_G 11. Jan 2004 18:00

Re: QUERY - Spalte einer Tabelle leer?
 
SQL-Code:
SELECT Count(*)
FROM  Tabelle
WHERE (...Deine Where-Clause) AND
       Spalte is not null
Bekommst du 0 als Ergebnis ist die Spalte leer.

trialfreak 11. Jan 2004 18:14

Re: QUERY - Spalte einer Tabelle leer?
 
Hallo,
nach Möglichkeit möchte ich für diese Aufgabe keinen neuen Query stellen.

Kann man da nicht analog was zu query.fieldvalues['NameDesEinzelfeldes'] oder so machen, ohne eine neue Anfrage an den Server stellen zu müssen?
Die Ergebnismenge ist ja schon im Rechner...

r_kerber 11. Jan 2004 18:35

Re: QUERY - Spalte einer Tabelle leer?
 
Zitat:

Zitat von trialfreak
Die Ergebnismenge ist ja schon im Rechner...

Nicht notwendigerweise. Bei großen Antwortmengen werden zunächst erst Teilmengen an den Client geschickt. Erst wenn dan weitere Daten benötigt werden, werden diese angefordert. Dir bleibt wohl nur übrig, Zeile für Zeile durch die Antwortmenge zu gehen und für das gewünscht Feld (TField) mit der Methode IsNull den Inhalt zu überprüfen.

trialfreak 11. Jan 2004 19:15

Re: QUERY - Spalte einer Tabelle leer?
 
Hallo,
ich denke auch dass dies dann die einzige Möglichkeit sein wird.

Die Ergebnismenge an sich ist maximal nur 10 Datensätze groß, da es um statistische Zusammenfassungen geht.

Trotzdem Danke für eure Anregungen :) - echt super hier... :dp:

trialfreak 15. Jan 2004 12:31

Re: QUERY - Spalte einer Tabelle leer?
 
So, vielleicht braucht es ja noch jemand anderes, hier ist die Prozedur die ich mir geschrieben habe :)

Delphi-Quellcode:
function spalteempty (query : TQuery; spalte : string) : boolean;
begin
  Result := true;
  query.First;
  if not (query.FieldByName(spalte).AsString='') then Result := false;
  repeat
    begin
      query.Next;
      if not (query.FieldByName(spalte).AsString='') then Result := false;
    end;
  until query.Eof;
end;
Ist die Spalte leer ist der Rückgabewert true, ansonsten false...

r_kerber 15. Jan 2004 12:38

Re: QUERY - Spalte einer Tabelle leer?
 
Warum nicht so?
Delphi-Quellcode:
if not query.FieldByName(spalte).IsNull then Result := false;
Und warum schreibst Du die if-Abfrage zweimal in Deinen Code?


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