متد GetRows برای کپی از یک رکوردست استفاده میشود.این متد یک آرایه دوبعدی را باز می گرداند. اولی نمایانگر فیلدیاستون و دومی شماره ردیف است.برای مثال intField فیلد و intRecord شماره ردیف را نمایش می دهد.
Zero-Base هستند یعنی 0 در جای خود معرف ستون یا ردیف صفر است
avarRecords(intField, intRecord)
برای گرفتن مقدار فیلد اول در ردیف دوم :
field1 = avarRecords(0,1)
برای گرفتن مقدار فیلد دوم در ردیف اول :
field2 = avarRecords(1,0)
اگر برای آرایه از تایپ Variant استفاده شود Ubound نیز استفاده کنید و +۱ را
Dim varEmployees As Variant
varEmployees = rstEmployees.GetRows(rstEmployees.RecordCount)
تعداد ردیف های بازیابی شده
Debug.Print "Number of Rows Retrieved: " & UBound(varEmployees, 2) + 1
تعداد فیلد ( ستون های بازیابی شده )
Debug.Print "Number of Fields Retrieved: " & UBound(varEmployees, 1) + 1
چاپ در پنجره Immediate window ( محتوای ستون ۳ و ردیف ۴)
Debug.Print "Field 3 - Row 5: " & varEmployees(2, 4)
چاپ در پنجره Immediate window ( محتوای ستون ۱ و ردیف ۲)
Debug.Print "Field 1 - Row 2: " & varEmployees(0, 1)
لوپ در بین هر ردیف :
'Loop thru each Row
For intRowNum = 0 To UBound(varEmployees, 2)
لوپ در بین هر ستون :
'Loop thru each Column
For intColNum = 0 To UBound(varEmployees, 1)
Debug.Print varEmployees(intColNum, intRowNum), Next
Debug.Print vbCrLf
Next
- Number of Rows Retrieved: 9
-
- Number of Fields Retrieved: 5
-
- Field 3 - Row 5: 908 W. Capital Way
- Field 1 - Row 2: Callahan
-
- Last Name First Name Address City Region
- ---------------------------------------------------------------------------------------------
- Buchanan Steven 14 Garrett Hill London Null
-
- Callahan Laura 4726 - 11th Ave. N.E. Seattle WA
-
- Davolio Nancy 507 - 20th Ave. E., Apt. 2A Seattle WA
-
- Dodsworth Anne 7 Houndstooth Rd. London Null
-
- Fuller Andrew 908 W. Capital Way Tacoma WA
-
- King Robert Edgeham Hollow, Winchester Way London Null
-
- Leverling Janet 722 Moss Bay Blvd. Kirkland WA
-
- Peacock Margaret 4110 Old Redmond Rd. Redmond WA
-
- Suyama Michael Coventry House, Miner Rd. London Null
CopyFromRecordset :
محتویات یک شئ ADO یا DAO Recordset را روی یک کاربرگ کپی می کند و از گوشه سمت چپ بالای محدوده مشخص شده آغاز می گردد . اگر شئ رکوردست حاوی فیلدهایی با اشیاء OLE در آنها باشد این روش با شکست مواجه خواهد شد.
For iCols = 0 to rs.Fields.Count - 1
ws.Cells(1, iCols + 1).Value = rs.Fields(iCols).Name
Next
ws.Range(ws.Cells(1, 1), _
ws.Cells(1, rs.Fields.Count)).Font.Bold = True
ws.Range("A2").CopyFromRecordset rs