Anzahl Datensätz

Alle Fragen um die Programmierung, die sich sonst nicht kategorisieren lassen. Von Makro bis Codeblock, von IF bis ENDIF

Moderator: Moderatoren

Antworten
Benutzeravatar
Jan
Marvin
Marvin
Beiträge: 14658
Registriert: Fr, 23. Sep 2005 18:23
Wohnort: 49328 Melle
Hat sich bedankt: 21 Mal
Danksagung erhalten: 88 Mal
Kontaktdaten:

Anzahl Datensätz

Beitrag von Jan »

Ich hätte da mal eine Frage. Mich bringt das inwzischen fast zur Verzweiflung, obwohl die Lösung vermutlich recht simpel sein dürfte: Wie zähle ich die Datensätze einer dbf, ohne als gelöscht markierte Sätze mitzuzählen?

Ich habe es mit LastRec() versucht und mit COUNT TO, nix hilft. Zusätzliche Spielereien mit SET DELETED haben auch nichts geändert. Immer werden gelöschte Sätze mitgezählt. Das muß doch machbar sein ohne da extra eine DO WHILE-Schleife einzubauen, in der ich jeden einzelnen Satz überprüfe ob oder ob nicht.

Jan
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16517
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Beitrag von Martin Altmann »

Hallo Jan,

Code: Alles auswählen

COUNT TO nAnz FOR .NOT. DELETED
sollte doch eigentlich gehen, oder???

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Sören
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 205
Registriert: Mo, 07. Aug 2006 10:18
Wohnort: Leipzig
Danksagung erhalten: 11 Mal

Beitrag von Sören »

Hallo Jan,

oder ...

Code: Alles auswählen

SET DELETED ON
COUNT ALL TO nAnzahl
Tschüs,
Sören
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Beitrag von brandelh »

Hi JAN,

die Anzahl der Datensätze einer DBF wird im Header gespeichert, daher ist das schnell mit LastRec() oder Recc() zu ermitteln.
Aber auch gelöschte Datensätze sind Datensätze und werden egal welche Einstellungen du tätigst immer mitgezählt (woher soll der Header das auch wissen). Wenn das nicht so wäre, könnte der Treiber intern nicht einfach das Dateiende erreichen um neue Sätze anzuhängen (Direktzugriffsdatei).

Es bleibt nichts übrig als die Anzahl zu ermitteln:

Code: Alles auswählen

count all for deleted() to nDelAnz 
oder
count all for ! deleted() to nNotDelAnz 
Beides ist wesentlich schneller als eine do while Schleife.
Gruß
Hubert
Antworten