AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Recordcount wenn filtered=true ?!?
Thema durchsuchen
Ansicht
Themen-Optionen

Recordcount wenn filtered=true ?!?

Ein Thema von st2000 · begonnen am 15. Okt 2003 · letzter Beitrag vom 16. Okt 2003
Antwort Antwort
st2000

Registriert seit: 23. Apr 2003
Ort: Hamburg
52 Beiträge
 
Delphi 5 Enterprise
 
#1

Recordcount wenn filtered=true ?!?

  Alt 15. Okt 2003, 20:30
Hallo, weiss jemand, wie man die Anzahl der resultierenden Datensätze zählt, NACHDEM ein Dataset gefiltert wurde ?
Habe eine Tabelle (Access 2000), welche gefiltert wird, so dass nur ein Datensatz stehen bleibt. Vorhanden sind aber (wenn nicht gefiltert) 23 Datensätze.

Mein TDBGrid zeigt mir auch nur den einen, korrekt gefundenen Datensatz an.

Mache ich aber

Delphi-Quellcode:
tbl1.filter:='feld1=51';
tbl1.filtered:=true;
tbl1.open;
x:=tbl1.recordcount
dann erhalte ich x = 23.

Demnach schert sich recordcount nicht um den Filter !?? Ist das so?
Wie kann man dennoch gefilterte Tabellen durchzählen ?

Einige andere Beiträge zum Thema filtern im Forum Datenbanken sehen mir allerdings so aus, als würde sehr wohl nur die gefilterte Menge gezählt.
Was mache ich denn falsch ?

Gruss,
ST2000
Stefan
Keine Softwarepatente ! Die Polen = wahre Freiheitskämpfer !!! Gerade noch rechtzeitig Mitglied geworden, um die Notbremse zu ziehen. Year !!!
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#2

Re: Recordcount wenn filtered=true ?!?

  Alt 15. Okt 2003, 21:20
Hallo,

es macht die Sache einfacher, wenn man erfährt, um welche Komponenten es hier geht.


tschüss
woki
  Mit Zitat antworten Zitat
st2000

Registriert seit: 23. Apr 2003
Ort: Hamburg
52 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Recordcount wenn filtered=true ?!?

  Alt 15. Okt 2003, 21:41
Naja, konkret eine TTable, aber wäre ja im Zweifel auf alle TDataSet-Nachkommen anzuwenden...
Die Tabelle tbl1 befüllt via einer DataSource1 ein TDBGRid1.

Ich filtere die Tabelle mittels ID 51, so das nur ein Datensatz rauskommen kann. Zeigt das Grid auch so an. Aber ein tbl1.recordsetcount zählt (ausgeführt nach dem tbl1.filtered:=true !!!) immer ALLE 23 Datensätze, die ich in der Tabelle drin habe.

Jetzt suche ich so eine Art "tbl1.filteredrecordsetcount"-Funktion...

War es das, was Dir noch fehlte ?

Gruss,
ST2000
Stefan
Keine Softwarepatente ! Die Polen = wahre Freiheitskämpfer !!! Gerade noch rechtzeitig Mitglied geworden, um die Notbremse zu ziehen. Year !!!
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#4

Re: Recordcount wenn filtered=true ?!?

  Alt 15. Okt 2003, 23:33
RecCount geistert immer wieder hier durch's Forum, allein - ich kann's net nachvollziehen wozu so'n Reccount gut ist. Ein sicherer Weg um Records zu zählen ist noch immer eine Selectanweisung der Form:
select count(*) where [SelbeBedingungWieInDemEigentlichenSelect] Das schnuckelt bei Regen, Schnee und Sonne
Tim Leuschner
  Mit Zitat antworten Zitat
st2000

Registriert seit: 23. Apr 2003
Ort: Hamburg
52 Beiträge
 
Delphi 5 Enterprise
 
#5

Re: Recordcount wenn filtered=true ?!?

  Alt 16. Okt 2003, 11:27
Schon, aber das geht ja nur , wenn man TQuery nutzt. Ich hab hier aber einen im Grunde sehr simplen Dialog, der eine Stammdatentabelle in einem Grid anzeigt. Dafür würde ich nur ungern mit SQL-Statement-Generierung auf String-Basis arbeiten (kommt einem immer mal ein Komma zuviel rein, und schon kann man wieder suchen...).
Sowas würde ich nur für 1:N-Zugriffe machen wollen/müssen.

Und wenn man sicherstellen will, daß ein Suchkriterium nur 1x gefunden wird, ist es m.E. sinnvoll, das mit

Delphi-Quellcode:
if tbl1.recordcount > 1 then tbl1.close;
showmessage('Mehrfach vorhanden!');
exit;
zu prüfen.

Habe aber mal mit Setrange rumprobiert, und damit gehts. Recordcount zählt auch nur 1, nicht 23...Prima.

Wozu gibts eigentlich diese ganzen unetrschiedlichen Filter und Suchmöglichkeiten ? Historisch gewachsen ?
Filter, Setrange, Locate, Findkey... Vielfalt ist ja schön, aber mir ist nicht klar, ob es je bestimmte Situationen gibt, in denen ich (nach der Ausgangsidee von Borland) nun Filter oder Setrange einsetzen soll. ?!?

Gruss,
ST2000
Stefan
Keine Softwarepatente ! Die Polen = wahre Freiheitskämpfer !!! Gerade noch rechtzeitig Mitglied geworden, um die Notbremse zu ziehen. Year !!!
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#6

Re: Recordcount wenn filtered=true ?!?

  Alt 16. Okt 2003, 20:16
Hi

Zitat von st2000:
Naja, konkret eine TTable, aber wäre ja im Zweifel auf alle TDataSet-Nachkommen anzuwenden...
Nicht wirklich, weil es eine Unzahl von Nachkommen von TDataset gibt, und die müssen die gleiche Property durchaus nicht alle identisch implementieren, insbesondere habe ich aber gefragt weil,

Zitat:
Recordcount unfiltered Table1 45603
Recordcount filtered Table1 16590
Recordcount unfiltered ClientDataSet1 128
Recordcount filtered ClientDataSet1 40
in allen mir bekannten Fällen Recordcount nämlich wie in dem obigen Beispielen nur die nicht gefilterten Datensätze zählt, wie Du das wolltest. Ich interpretiere deshalb das von dir beschriebene Verhalten eher als Bug, und da ist es dann schon recht wichtig, genau zu wissen, was alles beteiligt ist. Es scheint mir so, als würdest du mit TTable über BDE über ODBC azf Access zugreifen, einfach kein empfehlenswerter Weg, vielmehr ist hier TBetterAdodataset zu empfehlen, wenn Ado zur Verfügung steht.

Grüsse
Woki
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:39 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