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
Anzahl Datensätz
Moderator: Moderatoren
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jan,sollte doch eigentlich gehen, oder???
Viele Grüße,
Martin
Code: Alles auswählen
COUNT TO nAnz FOR .NOT. DELETED
Viele Grüße,
Martin
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.
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
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:
Beides ist wesentlich schneller als eine do while Schleife.
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
Gruß
Hubert
Hubert