Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: mael15 am Juni 28, 2016, 13:03:44

Titel: RecordCount ist falsch
Beitrag von: mael15 am Juni 28, 2016, 13:03:44
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!!
Titel: Re: RecordCount ist falsch
Beitrag von: DF6GL am Juni 28, 2016, 13:38:07
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.

Titel: Re: RecordCount ist falsch
Beitrag von: mael15 am Juni 28, 2016, 15:14:14
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!
Titel: Re: RecordCount ist falsch
Beitrag von: MaggieMay am Juni 28, 2016, 16:15:06
Hi,

zur Erklärung:
Snapshots können nur vorwärts gelesen werden, (spätestens) ein MoveFirst nach MoveLast muss daher fehlschlagen.
Titel: Re: RecordCount ist falsch
Beitrag von: Lachtaube am Juni 28, 2016, 16:43:48
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.
Titel: Re: RecordCount ist falsch
Beitrag von: MaggieMay am Juni 28, 2016, 17:20:53
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.
Titel: Re: RecordCount ist falsch
Beitrag von: Lachtaube am Juni 28, 2016, 17:47:21
Man könnte annehmen, dass es sich bei besagter Tabelle um eine verknüpfte Tabelle aus einer ODBC-Datenquelle handelt?!