2017-01-10 3 views
1

Wenn ich die folgende Methode:MS-Acces-Cord Array, Werte umgesetzt werden

rstArray = rs.GetRows(rs.RecordCount) 

die Ausgabe in dem Array ist von ähnlicher Größe:

rstArray(1,6) 'just an example 

wenn in Wirklichkeit der Ausgang (auch in der Abfrage-Ergebnisse in Access) sind:

rstArray(6,1) 'again just an example 

Meine Frage ist, warum dies umgesetzt wird erhalten?

Und wie würde ich das umkehren? Ich verstehe, wenn ich späte Bindung und die Arbeit mit Excel verwende, kann ich application.tranpose verwenden, aber was ist, wenn ich gerade in Access bin?

Antwort

2

So funktioniert GetRows funktioniert. Auch wenn Sie die Transponierungsfunktion von Excel verwenden können, wird es nicht immer funktionieren, wenn die Anzahl der Datensätze die maximale Anzahl der Spalten in Excel überschreitet. mit Spalten-Zeilen-Indizes statt oder Zeilen-Spalten

  1. Schleife über das Array:

    Sie haben 3 Optionen.

  2. Schreiben Sie eine Hilfsfunktion, die die Transposition für Sie übernimmt.
  3. Verwenden Sie nicht GetRows, wenn Sie nur die Daten in Excel einfügen. Verwenden Sie stattdessen die Methode Range.CopyFromRecordset.
+0

Ich war von dieser Antwort Angst. Ich mache derzeit Option # 1. Ich arbeite 100% in Access für diese aktuelle Funktion, aber mir war bewusst, Kopie aus Recordset (Verzweigung in Zugriff von Excel, woohoo?) – Phesago

+0

technisch, Sie würden sich von Excel in ADO verzweigen. ;-) – ThunderFrame

+0

das könnte eine dumme Frage sein, aber was ist ADO? Ist das im Grunde die Sache DAO vs ADDB? Wenn ja, ich denke, ich verstehe das schon. – Phesago

0

Verwenden Application.WorksheetFunction.Transpose (rs.GetRows)

Grüße, TheSilkCode

+0

'Run-Time-Fehler '13': Type Mismatch" mit dieser Methode auftreten, wenn das Array zurückgegeben von 'rs.GetRows" enthält Null-Werte. –

Verwandte Themen