SQL-Recordcount

10/04/2008 - 21:19 von frank | Report spam
Haalo alle zusammen,
wenn ich eine Recordset aus VBA ausführe, teste ich vorher den
Recordcount ab.
Aber mir ist aufgefallen auf, das in meinem Recordset eigentlich 5
Datensàtzen gezàhlt werden sollten, aber nur ein Datensatz gezàhlt
wird für die Auswertung!!!
Hier der Auszug:

Dim V3, V6, V7 As Variant
Set V1 = Application.CurrentDb
Set V2 = V1.OpenRecordset(V3)
V3 = "SELECT Buchkorrektur.FertigBuchkorrektur FROM Buchkorrektur
WHERE (Buchkorrektur.FertigBuchkorrektur)=" & 0
Set V2 = V1.OpenRecordset(V3)
V7 = V2.RecordCount
IF ..

Wenn ich Movefirst oder Movelast anwende(funktioniert wenn Datensàtze
vorhanden sind und die korrekt Anzahl wird ermittelt), habe ich aber
dann das Problem, das wenn KEINE Datensàtze mit Recordcount vorhanden
sind es einen Fehler gibt, den ich nicht abfangen kann mit meinen
Fehlerroutinen im VBA.
Wieso werden die Datensàtze nicht richti ermittelt?
Habe ich was vergessen ?
Gruß an alle
FH
 

Lesen sie die antworten

#1 Thomas Möller
10/04/2008 - 21:26 | Warnen spam
Hallo Frank,

schrieb:
wenn ich eine Recordset aus VBA ausführe, teste ich vorher den
Recordcount ab.
Aber mir ist aufgefallen auf, das in meinem Recordset eigentlich 5
Datensàtzen gezàhlt werden sollten, aber nur ein Datensatz gezàhlt
wird für die Auswertung!!!
Hier der Auszug:

Dim V3, V6, V7 As Variant
Set V1 = Application.CurrentDb
Set V2 = V1.OpenRecordset(V3)
V3 = "SELECT Buchkorrektur.FertigBuchkorrektur FROM Buchkorrektur
WHERE (Buchkorrektur.FertigBuchkorrektur)=" & 0
Set V2 = V1.OpenRecordset(V3)
V7 = V2.RecordCount
IF ..

Wenn ich Movefirst oder Movelast anwende(funktioniert wenn Datensàtze
vorhanden sind und die korrekt Anzahl wird ermittelt), habe ich aber
dann das Problem, das wenn KEINE Datensàtze mit Recordcount vorhanden
sind es einen Fehler gibt, den ich nicht abfangen kann mit meinen
Fehlerroutinen im VBA.
Wieso werden die Datensàtze nicht richti ermittelt?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

In dieser NG ist es üblich den vollen Realnamen (Vor- und Nachname)
anzugeben. Danke!

Die richtige Anzahl erhàltst Du erst, wenn Du mit Recordset.MoveLast
alle Datensàtze abgerufen hast.
Die Prüfung, ob keine DS vorhanden sind, kannst Du vornehmen, in dem Du
prüfst, ob der Datensatzzeiger schon nach dem letzten DS steht. Wenn das
der Fall ist, ist die Anzahl der DS 0. Sonst führst Du MoveLast aus und
ermittelst die Anzahl über RecordCount:


Dim Anz As Long

If VS.EOF THEN
Anz = 0
Else
V2.MoveLast
V2.MoveFirst
Anz = V2.RecordCount.
End If



HTH
Thomas

Homepage: www.Team-Moeller.de

Ähnliche fragen