Manchmal besteht der Bedarf ein Recordset in ein Array zu schreiben. 
Wie kann man dafür wiederverwendbaren Code programmieren? Man könnte alles in eine Prozedur schreiben. Also Instantiieren der Objekte, öffnen der Connection usw... Zusätzlich kommt es zu einer größeren Argumentenliste(Datenbank-Parameter...). Wenn ich dann noch auf einer Seite mehrere Arrays mit den gleichen oder anderen Werten füllen will, wird diese Prozedur wohl kaum noch irgendwie im Sinne der Performance stehen! Was liegt also näher als das ganze in eine Klasse zu packen?
Was für Eigenschaften und Methoden muss die Klasse haben?
Die benötigt ...
den Connection-String für den Zugang zur DB(hier über das ADO-Modell gelöst),
den SQL-String, um bestimmte Daten aus der DB zu holen und
den ArrayNamen, indem das Recordset hinterlegt wird
Die gibt Ihnen ...
das gefüllte Array (was sonst :-)) und 
die Zeilenanzahl
Also wird der Aufruf der Klasse so aussehen...       
        <%@ Language=VBScript %> <!--#include file="RSToArray.asp"--> <% Dim MyRSArray   '--- dieses Array wird mit dem rs gefüllt werden Set oMyClass = New RSToArray    '--- Instanz zur Klasse RSToArray '--- öffnen der Connection zur DB mit übergabe des Connection-Strings oMyClass.ConnOpen "Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=C:Inetpubwwwrootdeveloperdbaupload.mdb;" oMyClass.SQLString = "SELECT * from artikel"  '--- SQL-String übergeben oMyClass.RSArrayMaker MyRSArray   '--- MyRSArray wird mit RS-Daten gefüllt ZeilenAnzahl = oMyClass.ZeilenAnzahl   '--- ZeilenAnzahl in Variable schreiben '--- hier könnte man weitere Arrays füllen 'oMyClass.SQLString = "SELECT * from aspupload" 'oMyClass.RSArrayMaker MyNochEinArray Set oMyClass = Nothing '--- Zerstören der Klasse %>  | 
Die Daten befinden sich jetzt also in dem Array "MyRSArray". Dieses setzt sich so zusammen:
MyRSArray(x,y)
x = SpaltenAnzahl
y = ZeilenAnzahl
Jetzt kann ich das komplette Array z.B. in einer Tabelle ausgeben. Und das geht so...
        <HTML> <HEAD> </HEAD> <BODY> <% Response.Write ZeilenAnzahl Response.Write "<table>" for x = 0 to ZeilenAnzahl-1  Response.Write "<tr>"  for i = 0 to ubound(MyRSArray)   Response.Write "<td>" & MyRSArray(i,x) & "</td>"  next  Response.Write "</tr>" next Response.Write "<table>" %> </BODY> </HTML>  | 
Und natürlich der Aufbau der Klasse        <% Class RSToArray  Private conn  '--- ADODB.Connection-Object  Private rs   '--- ADODB.Recordset-Object  Private SQLStr   '--- der SQL-String  Private varAZ   '--- die ZeilenAnzahl  Private Sub Class_Initialize   ConnStr = ""   SQLStr = ""   '--- Objekte werden instantiiert   Set conn = Server.CreateObject("ADODB.Connection")   Set rs = Server.CreateObject("ADODB.Recordset")  End Sub  Private Sub Class_Terminate   '--- Objekte werden zerstört   Set conn = Nothing   Set rs = nothing  End Sub    '--- Öffnet die Connection zur DB  Public Sub ConnOpen(ConnString)   conn.Open ConnString  End Sub  '--- Schliesst die Connection zur DB  Public Sub ConnClose   conn.Close  End Sub    '--- Entgegennahme des SQLStrings  Public Property Let SQLString(Par2)   SQLStr = Par2  End Property    ' --- füllt das Array, dieses wird mit ByRef zurückgeben  Public Sub RSArrayMaker(ByRef arrRS)   rs.Open SQLStr, conn   If Not rs.EOF And Not rs.BOF Then   '--- Überprüfen ob RS leer ist    AnzahlSpalten = rs.Fields.Count - 1    AnzahlZeilen = 0    ReDim arrRS(AnzahlSpalten, AnzahlZeilen)    Do Until rs.EOF     '--- Array-Grösse anpassen     ReDim Preserve arrRS(AnzahlSpalten, AnzahlZeilen)     For i = 0 to AnzahlSpalten       arrRS(i,AnzahlZeilen) = rs.Fields(i)     Next     AnzahlZeilen = AnzahlZeilen + 1     rs.MoveNext    Loop   End If   rs.Close      varAZ = AnzahlZeilen  End Sub    '--- ZeilenAnzahl wird zurückgeben  Public Property Get ZeilenAnzahl   ZeilenAnzahl = varAZ  End Property End Class %>  | 
Unten steht der komplette Code zum Download bereit. Viel Spass!