# Recordset.GetRows - Zeilen werden zu Spalten!



## Ingo (5. August 2002)

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"  )


```
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 (5. August 2002)

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 (5. August 2002)

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?


----------

