Access 2000 / DAO / GetRows

30/05/2008 - 19:31 von Michael König | Report spam
Hallo zusammen,

irgendwie kommen mir allmàhlich Zweifel an meinen Fàhigkeiten ;-)
Der unten angehàngte Code liefert als Ergebnis stets nur 1 Zeile, obwohl
in der Tabelle über 40000 Datensàtze sind. Meine Absicht: ich möchte
alle Ids in dem Array gespeichert haben, deren Datensàtze die angegebene
Filterbedingung erfüllen.
Was mache ich falsch? Danke für Eure Hilfe

Gruß
Michael König

'--
Public Sub GetRowsTest()
'--

Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strBisZuDatum As String
Dim strFilter As String
Dim strSQL As String
Dim varArr As Variant
Dim i As Long

Set db = CurrentDb()

strBisZuDatum = "31.12.2004"
.
.
.
strFilter = " <= DateValue(" & ScrubInput(strBisZuDatum) & ")"
.
.
.
strSQL = "SELECT [Id] FROM tblTabelle WHERE [AnfDatum]" & strFilter
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset)
rs.MoveLast
rs.MoveFirst
Debug.Print rs.RecordCount ' Hier erscheint die richtige Anzahl 37286
varArr = rs.GetRows ' (rs.RecordCount) habe ich mal weggelassen
rs.Close
' For i = LBound(varArr) To UBound(varArr)
' Debug.Print varArr(i)
' Next
Debug.Print Str(UBound(varArr) + 1) & " Zeile(n) eingelesen."
' hier erscheint 1

Set rs = Nothing
Set db = Nothing

End Sub

'--
 

Lesen sie die antworten

#1 Josef Poetzl
30/05/2008 - 19:50 | Warnen spam
Hallo!

Michael König schrieb:
varArr = rs.GetRows ' (rs.RecordCount) habe ich mal weggelassen



... nimm rs.Recordcount wieder mit rein.

rs.Close
' For i = LBound(varArr) To UBound(varArr)
' Debug.Print varArr(i)
' Next
Debug.Print Str(UBound(varArr) + 1) & " Zeile(n) eingelesen."



varArr ist ein 2-dimensionales Feld =>
Debug.Print Str(UBound(varArr,2) + 1) & " Zeile(n) eingelesen."

mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen