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!!
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.
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!
Hi,
zur Erklärung:
Snapshots können nur vorwärts gelesen werden, (spätestens) ein MoveFirst nach MoveLast muss daher fehlschlagen.
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.
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.
Man könnte annehmen, dass es sich bei besagter Tabelle um eine verknüpfte Tabelle aus einer ODBC-Datenquelle handelt?!