Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

RecordCount ist falsch

Begonnen von mael15, Juni 28, 2016, 13:03:44

⏪ vorheriges - nächstes ⏩

mael15

hallo zusammen,
ich soll in meiner firma ein formular debuggen, das jemand anderes geschrieben hat. ich arbeite sonst mit c++, hate aber bisher in vba kleinere korrekturen hinbekommen.
ich habe folgenden code:
Set dba = CurrentDb()
Set rsa = dba.OpenRecordset("T_TmpRechnungen") 'eingegeben Positionen werden abgefragt
counterall = rsa.RecordCount

und hier ist counterall == 8, obwohl in der tabelle T_TmpRechnungen nur 1 eintrag vorhanden ist (siehe anhang). wo kann da das problem sein?
danke!!

DF6GL

Hallo,

anhand des Bildes ist nicht erkennbar, wieviel DS in der Tabelle tatsächlich vorhanden  (Es könnte ja eine Filter aktiv sein).

Ansonsten zeigt RecordCount eines Recordsets nur dann dir richtige Anzahl DS an, wenn vorher die gesamten Daten(DS) geladen wurden:

ZitatDim Counterall as Long, dba as Database
Set dba = CurrentDb()
Set rsa = dba.OpenRecordset("T_TmpRechnungen",dbOpenSnapshot) 'eingegeben Positionen werden abgefragt
rsa.MoveLast
rsa.MoveFirst
counterall = rsa.RecordCount
.
.

Alternativ kann auch (z. B. für einen Test)  die DCount-Funktion bemüht werden:
.
.
counterall =DCount ("*","T_TmpRechnungen")
.



Wobei die Namensgebung darauf hindeutet, dass diese Tabelle öfters DS-Löschungen unterliegt, bzw. sogar selber ganz gelöscht wird.
Das ist in DBs eher zu vermeiden und es kann auch deshalb eine unterschiedliche DS-Anzahl angezeigt werden, wenn die beiden Anzeige-Methoden zu unterschiedlichen Zeitpunkten angewendet werden.

Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

mael15

vielen dank für die ausführliche antwort!
rsa.MoveLast
rsa.MoveFirst
hat leider nichts geändert, DCount ("*","T_TmpRechnungen") aber schon, sodass es jetzt funktioniert.
danke!

MaggieMay

Hi,

zur Erklärung:
Snapshots können nur vorwärts gelesen werden, (spätestens) ein MoveFirst nach MoveLast muss daher fehlschlagen.
Freundliche Grüße
MaggieMay

Lachtaube

Recordsets vom Typ Snapshot können sowohl vorwärts als auch rückwärts gelesen werden, sofern man nicht beim Anlegen des Recordsets die Option dbForwardOnly angibt.
Grüße von der (⌒▽⌒)

MaggieMay

Oh ja, Danke für die Richtigstellung.

Dann sollte die Befehlsfolge aber auch zu einem korrekten Ergebnis führen, andernfalls stimmt möglicherweise etwas mit der Tabelle nicht.
Freundliche Grüße
MaggieMay

Lachtaube

Man könnte annehmen, dass es sich bei besagter Tabelle um eine verknüpfte Tabelle aus einer ODBC-Datenquelle handelt?!
Grüße von der (⌒▽⌒)