![]() |
Datenbank: dbf • Zugriff über: bde
Spalte gruppieren
Hallo alle'zsamm,
ich habe leider keinen passenden Thread zu meinem Problem gefunden. (Oder nicht richtig gesucht ;-) ) Ich möchte einen Rückgabewert der mir sagt wieviele Datensätze vorhanden, gruppiert nach Inhalt der Spalte 'gruppe'. Ausserdem, wie sieht der Typ der Rückgabe aus (Stringlist?) der dazu erforderlich ist? Besten Dank |
Re: Spalte gruppieren
SQL-Code:
select count(*) from <tabelle> group by gruppe;
|
Re: Spalte gruppieren
SQL-Code:
Meinst Du das?
SELECT gruppe, COUNT(*) AS Anzahl
FROM Tabelle GROUP BY gruppe |
Re: Spalte gruppieren
Danke Leute,
mein Problem ist der Rückgabewert. Ich habe keine Ahnung was sql zurückgibt. Die von euch erwähnten Beispiele müssen ja verarbeitet werden. |
Re: Spalte gruppieren
Pack das SQL als Eigenschaft SQL in eine Query. Diese öffnest Du mit Open und kannst anschließend über z.B. Query.FieldByName('gruppe').AsString auf das Feld Gruppe zugreifen.
|
Re: Spalte gruppieren
Danke Deddy
ich hab da ne Blockade, String ist String wie passen da die Ergebnisse rein die aus einer Gruppierung resultieren? Mein gewünschtes Ergebnis soll ja zB so aussehen: Gruppe 1: 23 (Datensätze) Gruppe 2: 12 (Datensätze) egal ob das dann in 'nem Memo oder Grid steht. |
Re: Spalte gruppieren
Ich glaub Deddy, das war nicht was Privateer meinte.
Prinzipiell kriegst du, wenn du eine TQuery öffnest, eine Datenmenge kompatibel zum Datentyp TDataset zurück. (Siehe OH). Ein Dataset besteht aus Zeilen und Spalten. Du bist aber immer nur auf einer Zeile positioniert. Dann kann man, wie Deddy korrekt erwähnte, über die Funktion FieldByName des Dataset auf den Wert der angegeben Spalte zurückgreifen. Es wird aber dabei natürlich nur der Wert der aktuell positionierten Zeile zurückgegeben. Um auf eine andere Zeile zu springen, dafür gibts zum einen die Methoden Next, Prior, First und Last (selbssprechend), zum anderen auch Suchfunktionen wie z.B. Locate, mit der du nach einem Wert einer (oder gar mehreren) Spalten suchen kannst. Wird ein Eintrag gefunden, so wird auf den ersten der gefundenen Eintäge positioniert, und du kannst wieder mit FieldByName auslesen. Ich hoffe, du kannst jetzt den hellen Punkt am Ende des Tunnels schon erkennen :zwinker: PS: Übrigens, neben den Methoden des Dataset, kannst du auch noch ein TDataSource an dein Dataset binden (also deine TQuery), und ein DBGrid kannst du dann wiederum an die Datasource binden. Dadurch wird die komplette Ergebnismeng als Grid dargestellt. |
Re: Spalte gruppieren
Danke Jelly,
offen gesagt versteh ich nur Bahnhof und fahren nur Güterzüge durch Die Beispiel zu Query & Co in der OH sind ja auch n Witz.
Delphi-Quellcode:
Ist nun "Anzahl" vom Typ Integer den ich nun benutzen kann?
Query1.Close;
Query1.sql.Clear; Query1.SQL.Add('SELECT gruppe, COUNT(*) AS Anzahl FROM artdb GROUP BY gruppe'); Query1.Open; :roll: :gruebel: |
Re: Spalte gruppieren
|
Re: Spalte gruppieren
Hallo Privater3000 :???:
Falls ich Dich richtig verstanden habe: (…) „Ich möchte einen Rückgabewert der mir sagt wieviele Datensätze vorhanden, gruppiert nach Inhalt der Spalte 'gruppe'. Ausserdem, wie sieht der Typ der Rückgabe aus (Stringlist?) der dazu erforderlich ist?“ (…) Falls Du die SQL-Anweisung von DeddyH in einer Query (Namens: Query1) benutzen solltest (Empfohlen) :idea: : SELECT gruppe, COUNT(*) AS Anzahl FROM Tabelle GROUP BY gruppe Dann bekommst Du die Antwort auf die Frage: „wie viele Datensätze“ z.B. so: Query1.FieldByName('ANZAHL').AsInteger; Die Anzahl ist dann von DatenTyp Integer. Darüberhinaus kannst Du ein Datentyp auch so ausläsen: Query1.FieldByName('ANZAHL').DataType; // TFieldType Viele Grüße PaulJr |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:07 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-2025 by Thomas Breitkreuz