Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Prüfen ob Spalte eines DBGrid leer ist (https://www.delphipraxis.net/179425-pruefen-ob-spalte-eines-dbgrid-leer-ist.html)

Nico B. 6. Mär 2014 11:47

Datenbank: MS SQL • Version: 2005 • Zugriff über: ADO

Prüfen ob Spalte eines DBGrid leer ist
 
Hallo zusammen,

ich habe nur ne ganz kurze Frage zu der ich leider keine Antwort finde.

Gibt es eine Möglichkeit zu prüfen, ob eine Spalte eines DBGrid ausschließlich NULL-Werte enthält?

Mit DBGrid.Fields[xy].IsNull kann ich prüfen, ob der aktuell ausgewählte Datensatz in der Spalte xy NULL ist. Daraus könnte ich auch eine Schleife für die gesamte Spalte bauen, aber lieber wäre mir, ich könnte das mit einem Befehl erledigen.

Nico

mkinzler 6. Mär 2014 11:50

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Überprüfe besser das dahinterliegende DataSet

Nico B. 6. Mär 2014 11:58

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Hallo mkinzler,

das kann ich auch machen.
Aber auch hierfür kenne ich keinen Befehl mit dem ich die ganze Spalte prüfen kann.

Nico

baumina 6. Mär 2014 12:00

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Ich würde einen SQL-Befehl an die Datenbank schicken.

Code:
Select Count(*) from TABELLE where FELD is null

p80286 6. Mär 2014 12:08

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Man könnte es auch mit sortieren versuchen.
nach einen
Code:
order by feldname
befinden sich die NULL-Inhalte am Ende.

Interessanter wäre allerdings zu wissen wofür das gut sein soll. Ggf. kann man das Problem ja auch mit einer Abfrage erschlagen.

Gruß
K-H

Nico B. 6. Mär 2014 12:11

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Okay, dann erzähle ich vielleicht doch etwas mehr zu meinem Problem...

Ich habe eine SQL Abfrage mit der ich mehrere Spalten abfrage.
Code:
SELECT Spalte1, Spalte2, Spalte3, Spalte4 FROM Tabelle
Diese Abfrage möchte ich immer wieder gleich verwenden.
Nun kommt es aber vor, dass bspw. in Spalte 3 in keinem der gefundenen Datensätze ein Wert steht, sondern überall NULL. Wenn dem so ist, möchte ich die Spalte 3 nicht sehen.

Mein Plan war, diese Spalte dann unsichtbar zu machen.
Code:
if DBGrid.Fields['Spalte3'].IsNull
  then
    DBGrid.Columns['Spalte3'].Visible:=false
  else
    DBGrid.Columns['Spalte3'].Visible:=true
Nur leider prüft IsNull nur den Wert des aktuellen Datensatzes in der Spalte. Daher suche ich eine andere Möglichkeit...

DeddyH 6. Mär 2014 12:14

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Wieso nicht so wie baumina vorgeschlagen hat, allerdings mit einem NOT dazwischen?
SQL-Code:
SELECT
  COUNT(*)
FROM
  Tabelle
WHERE
  Feld IS NOT NULL
Kommt dabei etwas anderes als 0 zurück, enthält das Feld nicht ausschließlich NULL-Werte. Und ja, das wäre dann halt eine solche Abfrage je Spalte, aber ich wüsste nicht, wie man das großartig anders machen sollte.

Nico B. 6. Mär 2014 12:20

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Das Problem bei der Lösung ist, dass ich dann alle Datensätze, die keinen Wert in der Spalte3 haben, nicht mehr angezeigt bekomme. Ich möchte aber weiterhin alle Datensätze angezeigt bekommen nur eben die Spalte 3 nicht mehr.

DeddyH 6. Mär 2014 12:27

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Du sollst die Abfrage ja auch losgelöst vor der eigentlichen Datenabfrage losschicken. Anhand der zurückgegebenen Anzahl kannst Du dann entscheiden, ob die Spalte angezeigt werden soll oder nicht. Übrigens kannst Du Dir auch ein Statement bauen, das gleich die entsprechende Anzahl je Spalte ermittelt, dann geht das nur einmal übers Netz.

Nico B. 6. Mär 2014 12:32

AW: Prüfen ob Spalte eines DBGrid leer ist
 
Mhm, okay, wie könnte dieses Statement für meinen vereinfachten Fall den aussehen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:44 Uhr.
Seite 1 von 2  1 2      

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