Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Anzahl Datensätze in Statusbar (https://www.delphipraxis.net/161148-anzahl-datensaetze-statusbar.html)

zeras 19. Jun 2011 15:28

Datenbank: firebird • Version: 2.x • Zugriff über: Interbase

Anzahl Datensätze in Statusbar
 
Ich möchte in einer Statusbar die Anzahl der Datensätze anzeigen.

Das müßte ja so gehen:

Delphi-Quellcode:
  if DM1.IBDatabase1.Connected then begin
    SB1.Panels[0].Text := Format('Anzahl Datensätze %d',[DM1.IBTable1.RecordCount])
  end;
Dies mache ich zur Zeit mit einem Timer. Ist aber bestimmt nicht die eleganteste Art.
Bei den IBTable gibt es ja auch viele Ereignisse, aber wie soll ich das machen? Dann müßte ich ja fast bei jedes Ereignis den obigen Code eintragen oder gibt es ein Ereignis, welches immer eintrifft, wenn etwas an den Tabelle geändert wurde?
Beim Start des Programms müßte die Anzahl gleich drinstehen und dann bei jeder DB Aktion dann entsprechend mehr oder weniger anzeigen.

hoika 19. Jun 2011 15:55

AW: Anzahl Datensätze in Statusbar
 
Hallo,

Zitat:

Dann müßte ich ja fast bei jedes Ereignis den obigen Code eintragen
Das sowieso nicht.
Schreibe eine Methode, die obigen Code aufruft.
Da du nicht schreibst, wie du deine Daten eingibst., was soll man dazu antworten ... ?

Das RecordCount würde ich durch ein Select Count(*) einer zusätzlichen Query ersetzen.
RecordCount holt alle Daten lokal rüber und zählt dabei die Datensätze.

Zitat:

fast bei jedes Ereignis
Also die Anzahl der Datensätze ändert sich nur beim Insert und Delete, oder ?


Heiko

hans ditter 19. Jun 2011 16:05

AW: Anzahl Datensätze in Statusbar
 
Bei vielen Komponenten gibt es ja ein OnChange Ereignis. Vielleicht wäre das der richtige Ansatz...

LG; hans ditter

zeras 19. Jun 2011 16:44

AW: Anzahl Datensätze in Statusbar
 
Ich nutze folgende Komponenten, um über Firebird auf die Daten zuzugreifen:
- IB Database
- IB Table
- Datasource.
Dazu noch einzelne DBEdit Felder zum Eintragen und ein SG von TMS zur Gesamtanzeige.
Bei Datasource gibt es ein OnDataChange. Vielleicht geht das.

Zitat:

Zitat von hoika (Beitrag 1107321)
Das RecordCount würde ich durch ein Select Count(*) einer zusätzlichen Query ersetzen.
RecordCount holt alle Daten lokal rüber und zählt dabei die Datensätze.

Zur Zeit habe ich nur eine Gesamtübersicht im Grid, aber vielleicht filtere ich die dann auch mal, wenn es zu viele werden. Dann wäre dein Tipp auf jeden Fall wichtig, da ich ansonsten falsche Werte bekomme.

Werde mit euren Tipps weitermachen.

mkinzler 19. Jun 2011 16:47

AW: Anzahl Datensätze in Statusbar
 
Das Update der Anzahl der Datensätze macht aber nur Sinn, wenn du das Grid auch aktualisierst, sonst ist die Angabe inkonsistent

zeras 19. Jun 2011 16:51

AW: Anzahl Datensätze in Statusbar
 
Zitat:

Zitat von mkinzler (Beitrag 1107329)
Das Update der Anzahl der Datensätze macht aber nur Sinn, wenn du das Grid auch aktualisierst, sonst ist die Angabe inkonsistent


Hierzu habe ich keine Zeile programmiert, nur die Verbindungen hergestellt. Soweit klappt das erst einmal.
Wenn ich im Grid auf eine Zeile klicke, dann werden in den DBEditfildern die Daten der angeklickten Zeile angezeigt, die ich dann ändern kann.
Ich bin zwar nicht der Datenbankexperte, aber das scheint zu gehen.

mkinzler 19. Jun 2011 16:59

AW: Anzahl Datensätze in Statusbar
 
Solange du der einzige Benutzer bist. Bei MU könnte die Anzahl abweichen, wenn andere Benutzer DS hinzufügen oder löschen

sx2008 19. Jun 2011 17:12

AW: Anzahl Datensätze in Statusbar
 
In der RxLib gibt es schon eine Komponente (TDbStatusLabel in Unit RxDbctrl.pas) die Anzahl der Datensätze und die aktuelle Position innerhalb der Datenmenge anzeigen kann.
Die Komponente ist unabhängig von der Art der Datenquelle und setzt nur eine DataSource vorraus.
Ich denke dass man durch Analysieren des Sourcecode eine leicht abgespeckte Lösung bekommen kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:58 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 by Thomas Breitkreuz