Recordset.GetRows - Zeilen werden zu Spalten!

Ingo

Grünschnabel
Hallo!
Problem: Ich habe eine Tabelle in einem Recordset gespeichert, damit ich diese dann in einem Report einfügen und danach ausdrucken kann. Damit nicht über 400 Seiten ausgedruckt werden, kommt erstmal ein Formular bei dem man dann entweder "Alles ausdrucken" oder "Bestimmte Datensätze: Von _ Bis _" auswählen kann.

Wenn bestimmte Datensätze ausgewählt werden, habe ich die gewünschten Datensätze mit dem GetRows-Befehl ausgelesen und in ein Array gespeichert. Das ganze schaut dann so aus:

(Erklärung noch kurz: txtDataNoto is Textfeld für das "bis" und das txtDataNoFrom "von" :) )

Code:
Private Sub rsChangeLogFilter(rsChangeLog As ADODB.Recordset, arrChangeLog As Variant)
Dim lRows As Long

' Anzahl an Zeilen ermitteln, die ausgelesen werden sollen
lRows = CInt(txtDataNoTo.Text) - CInt(txtDatanoFrom.Text) + 1

' Jetzt gehe ich zur ersten zeile der tabelle und geh so lange hoch bis ich zur Zeile angekommen bin, ab der ich rauslesen will (textfeld "von")

If rsChangeLog.RecordCount <> 0 Then
  rsChangeLog.MoveFirst
  Do While rsChangeLog.EOF <> True
    If rsChangeLog("Nr1") = CInt(txtDataNoFrom.Text) Then
      Exit Do
    End If
    rsChangeLog.MoveNext
  Loop
End If

' Jetzt lese ich die Daten aus und kopiere sie in das Array

arrChangeLog = rsChangeLog.GetRows(lRows, adBookmarkCurrent)

rsChangeLog.Close
End Sub

Mein Problem: EIgentlich klappt alles, bis auf die sache, dass in dem Array die Spalten auf einmal zeilen sind und andersrum. So dass dann die Tabelle falschrum ausgedruckt wird, bzw. nur noch Laufzeitfehler kommen.

Könntet ihr mir bitte sagen warum das so kommt und wie ich das ändern könnte?

Vielen Dank im Vorraus, ihr schafft das ;)


-----------------
asphyxia:
ich war mal so frei, den code
etwas zu formatieren und
einzurücken, damit man das
besser lesen kann. ;)
 

Dario Linsky

Erfahrenes Mitglied
ich geh mal davon aus, dass in dem feld "Nr1" immer hochgezählt wird, richtig? dann lad das recordset doch einfach mit einer bedingten abfrage ("SELECT * FROM tabelle WHERE Nr1 >= " & txtDataNoFrom.Text), dann kannst du dir schonmal die schleife sparen. ;)
ausserdem würd ich das array eigentlich sogar ganz weglassen, und nur mit dem recordset arbeiten. oder du erstellst dir halt einfach ein eigenes record, dass du mit daten füllst. die daten kannst du dann in einer schleife aus deinem record/recordset auslesen und in den report schreiben.
 

Ingo

Grünschnabel
Leider kann ich keine Datenbank abfragen, da die gespeicherte Tabelle schon gefiltert und formatiert ist. Die Tabelle hab ich in ein array gespeichert, die infos dann an das recordset übergeben, dann diesen schriit gemacht :) und danach wird das array wieder zu einem recordset. So dass zum schluss das recordset an den report weitergegeben wird. Verstanden? :)