![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
TQuery -> Anzahl Datensätze
Hallo zusammen,
kann man einer TQuery die Anzahl der Datensätze entnehmen, ohne mit Count in SQL zu arbeiten. Habe die TQuery mit einer DataSource an ein DBGrid gekoppelt und würde jetzt gerne wissen, wieviele Datensätze in der DBGrid sind Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Einfach zum Ende der Query scrollen.
Oracle weis ja selbst nicht wenn die ersten Datensätze zum Client geliefert werden wieviel Datensätze enthalten sind da ja im Hintergrund u.U. noch die "restlichen" Ergebnissätze bestimmt werden. |
Re: TQuery -> Anzahl Datensätze
Alles klar,
das klappt schon mal, und wie könnte ich jetzt noch die Summe der in Spalte XYZ enthaltenen Werte ermitteln ? (Ohne SQL) Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Weicht diese Anzahl von der Anzahl der Datensätze ab?
|
Re: TQuery -> Anzahl Datensätze
Ja,
es ist ein berechnetes Feld. Es kann in jedem Datensatz, die Zahl 0 - 10 annehmen. Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Dann wirst du nicht ohen weitere Abfage auskommen.
|
Re: TQuery -> Anzahl Datensätze
Danke für die Hilfe,
dann weiss ich jetzt bescheid und werde weiter TQuerys basteln. Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Du könntest auch versuchen die benötigten infos dazuzujoinen.
SQL-Code:
select <feldlist>,(select count(<id>) from <tabelle>) as anzahl from <tabelle> ...
|
Re: TQuery -> Anzahl Datensätze
Hallo,
recht einfach geht es mit "FetchAll" und "RecordCount":
Delphi-Quellcode:
Für die Summe am besten SQL oder Schleife (aber recht langsam):
MyQuery.FetchAll ;
ShowMessage('Anzahl: ' + IntToStr(MyQuery.RecordCount)) ;
Delphi-Quellcode:
Hoffe es hilft.
var
iSum : Currrency ; .. with MyQuery do begin { Ausgaben deaktivieren, sonst werden die Grids mit "gescrollt" } DisableControls ; { Zurücksetzen } iSum := 0 ; { Zum Anfang } First ; { Schleife, über alle Datensätze } while EOF = FALSE do begin { Addieren } iSum := iSum + FieldByName('FieldXYZ').AsCurrency ; { Nächster Datensatz } Next ; end ; // while EOF { Ausgaben aktivieren } EnableControls ; end ; // with MyQuery Viele Grüsse Thomas |
Re: TQuery -> Anzahl Datensätze
Hi,
danke für die Hilfen. Die Schleife ist echt zu langsam, da 13.000 Datensätze. Zitat:
Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Zitat:
|
Re: TQuery -> Anzahl Datensätze
Ich möchte den Inhalt eines Feld, welches ich DB_ANZAHL genannt habe addieren.
Das Feld DB_ANZAHL, ist ein berechnetes Feld. Kann ich das Feld DB_ANZAHL in meine Select Abfrage implementieren ? Dann könnte ich sogar danach sortieren und auch SUM() machen ... Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Wo wird das Feld berechnet?
|
Re: TQuery -> Anzahl Datensätze
In der entsprechenden TQuery in dem Ereignis onCalcFields.
Vorher hatte ich das Feld mit Doppelklick auf die Query und 'Neues Feld' der Query beigefügt. Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Dann geht es nicht, da zu diesem Zeitpunkt das Feld noch nicht existiert. U.U. könntest du das Feld im Query anlegen.
|
Re: TQuery -> Anzahl Datensätze
Nochmal zu deiner Select - Abfrage in der Select Abfrage:
Zitat:
Nur wenn ich:
Delphi-Quellcode:
mache habe ich ja nur die Gesamte Anzahl von der anderen Tabelle.
select <feldlist>,(select count(<id>) from <Andere Tabelle>) as anzahl from <tabelle> ..
Ich müsste also so was in der Art bauen:
Delphi-Quellcode:
Wenn ich das mache dauert die Abfrage aber sehr lange. Kann ich die Berechnung in der Select - Abfrage auch für nur die angezeigten Werte machen ?
select <ID, SpalteA, SpalteB>,(select count(<ID>) from <Tabelle 2> WHERE TABELLE1.ID = TABELLE2.ID) as anzahl from <Tabelle 1> ..
So läuft das ja by oncalcfields ... Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Bei vielen Zeilen würde ich die Abfragen trennen
|
Re: TQuery -> Anzahl Datensätze
Was meinst Du genau mit Trennen ?
Jede Abfrage in eine TQuery ... Also eine für die Gesamt-Anzahl und die andere für die Datensätze ? Aber wenn ich jetzt, wie in der letzten Abfrage von mir gemacht, die Anzahl für jeden Datensatz berechnet werden soll kann ich die ja schlecht trennen, oder ? Gruss Holger |
Re: TQuery -> Anzahl Datensätze
Zitat:
|
Re: TQuery -> Anzahl Datensätze
Das funktioniert. Mit Anzahl je Datensatz.
Ich schaue in einer anderen Tabelle nach wieviel mal die ID aus Tabelle1 in der anderen Tabelle vorhanden ist. Da mache ich einen Count drüber und schreibe nun pro ID aus Tabelle 1 die Anzahl der vorkommenden IDs aus Tabelle 2 in eine virtuelle Spalte und zeige dieses an. Gruss Holger |
Re: TQuery -> Anzahl Datensätze
SQL-Code:
Ungetestet
SELECT A.ID, COUNT(B.A_ID) AS Anzahl FROM Tabelle A
LEFT JOIN Tabelle B ON B.A_ID = A.ID GROUP BY A.ID |
Re: TQuery -> Anzahl Datensätze
Mit dem Group by klappt es.
Danke Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:06 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