Entwickler-Ecke

Datenbanken - Anzahl von spalten erfassen und auf inhalt prüfen


Morpheus1572 - Fr 18.04.08 08:30
Titel: Anzahl von spalten erfassen und auf inhalt prüfen
wie ich das obige problem mit grid löse habe ich schon ansatzweise gefunden. aber wie ich es ohne dem mache ist mir nicht klar.

Die Situation:

ich muss herausfinden ob in einem db-satz irgendein feld leer ist. egal welches. ich dachte mir, ich ermittel die anzahl der spalten und springe dann mit hilfe des index -1 von feld zu feld und prüfe ob was drin steht.

aber ich scheiter schon bei der ermittlung der spalten mittels SQL-Anweisung. wenn ich count(*) benutze bekomme ich ja die anzahl der datensätze. gibt es sowas wie colcount oder so? und wenn ja, wie stelle ich den rest an. mittels einer for-schleife oder gibt es da auch wieder sowas schönes von SQL was mir das vereinfacht?

Wer hat blos die theorie erfunden? in der klappt immer alles auf anhieb! ;-)


Klabautermann - Fr 18.04.08 09:22

Hi,

du kannst über MyDataSet.Fields.Fields[i] auf die einzelnen Felder zugreifen. Mit MyDataSet.Fields.Count ermittelst du deren Anzahl.

Gruß
Klabautermann


Morpheus1572 - Fr 18.04.08 09:29

Moin,

die pallette von Delphi ist erschlagend. okay, mit dataset meinst du mein ADOQuery?


Klabautermann - Sa 19.04.08 00:03

Hi,

user profile iconMorpheus1572 hat folgendes geschrieben:
die pallette von Delphi ist erschlagend. okay, mit dataset meinst du mein ADOQuery?


ja, zum Beispiel. Die allermeisten Datenbank Zugriffskomponenten ind Delphi sind abgeleitet von tDataSet und somit sind sie alle sehr ähnlich zu bedienen. So haben z.B. die Beschreibungen, die ich hier [http://www.delphi-library.de/topic_Mit+tTable+amp+tQuery+Arbeiten_363.html] vor über 5 Jahren hier für de BDE Komponenten gemacht auch heute noch ihre Gültigkeit für dein ADOQuery.

MyDataSet war also nur ein fiktiver Variablenname, der darauf hinweisen sollte das es sich um eine von tDataSet abgeleitete Komponente handelt.

Gruß
Klabautermann


Morpheus1572 - Sa 19.04.08 07:12

hmmm, ich scheine was falsch zu machen... guck bitte mal drüber:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
          ADOQuery1.Active := False;
          ADOQuery1.SQL.Text := 'SELECT count(AGInfoID) as ANZ FROM AGInfo';
          ADOQuery1.Active := True;

          i := ADOQuery1.Fields.Count;
          DatZaehler := IntToStr(i);
          ShowMessage('Die Anzahl der Spalten beträgt: ' + DatZaehler);


Die Tabelle 'AGInfo' ist leer und hat insgesamt 13 Felder. Bei der Auswertung von 'i' bekomme ich das Ergebnis 1 zurück. (?)

Gruß Morph.


alzaimar - Sa 19.04.08 10:19

Ich mache es immer mit 'MyDataset.FieldCount'


Agawain - Sa 19.04.08 10:51

Moin

Du arbeitest mit einem Query, dieses Query wirkt wie ein Dataset.
Wenn Du aber ein SELECT COUNT machst, dann sind in dem sozusagen virtuellen Dataset nur die Anzahl Datensätze, keine Felder.

Mach ein SELECT * dann sollte es mit field.count funktionieren.

Kleine Korrektur: Insofern doch 1 Feld, darum auch die Rückgabe 1, nämlich das Feld, dass Dir sagt, wieviel Datensätze vorhanden sind.


Morpheus1572 - Sa 19.04.08 15:50

@Agawain: SUPER. Danke. Funzt. ;-)