AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Spalte gruppieren

Ein Thema von Privateer3000 · begonnen am 19. Nov 2007 · letzter Beitrag vom 19. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

Spalte gruppieren

  Alt 19. Nov 2007, 08:57
Datenbank: dbf • Zugriff über: bde
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Spalte gruppieren

  Alt 19. Nov 2007, 08:59
select count(*) from <tabelle> group by gruppe;
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:00
SQL-Code:
SELECT gruppe, COUNT(*) AS Anzahl
FROM Tabelle
GROUP BY gruppe
Meinst Du das?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:20
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.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:23
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:29
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.
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von Jelly
Jelly

Registriert seit: 11. Apr 2003
Ort: Moestroff (Luxemburg)
3.741 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:31
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

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.
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:56
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:
Query1.Close;
Query1.sql.Clear;
Query1.SQL.Add('SELECT gruppe, COUNT(*) AS Anzahl FROM artdb GROUP BY gruppe');
Query1.Open;
Ist nun "Anzahl" vom Typ Integer den ich nun benutzen kann?

Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Spalte gruppieren

  Alt 19. Nov 2007, 09:58
http://www.dsdt.info/tutorials/?cat=6
Markus Kinzler
  Mit Zitat antworten Zitat
PaulJr

Registriert seit: 9. Feb 2007
Ort: Stuttgart
66 Beiträge
 
#10

Re: Spalte gruppieren

  Alt 19. Nov 2007, 10:03
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) :

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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 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