Kevin,尝试使用GetRows方法:
这是我的程序代码剪报:
- Private Sub UserForm_Initialize()
- On Error GoTo ErrorHandler
- Dim Cnxn As ADODB.Connection
- Dim rstNew As ADODB.Recordset
- Dim strCnxn As String
- Dim strSQL As String
- Dim retArr As Variant
- Dim i As Long, j As Long
-
- ' Open connection
-
- strCnxn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
- "Data Source=D:\AUTOLISP\LISPS\VBA\ACCESS\data.mdb;"
- Set Cnxn = New ADODB.Connection
- Cnxn.Open strCnxn
-
- ' Open table
-
- Set rstNew = New ADODB.Recordset
- strSQL = "prot_Viabilita" ' table name
- rstNew.Open strSQL, Cnxn, adOpenKeyset, adLockOptimistic, adCmdTable
- [b]retArr = rstNew.GetRows[/b]
- Me.Caption = "Data from table " & Chr(34) & strSQL & Chr(34)
- '
- ' Transpose record data and populate list box
- '
- ReDim dataArr(UBound(retArr, 2), UBound(retArr, 1)) As String
- For i = 0 To UBound(retArr, 1)
- For j = 0 To UBound(retArr, 2)
- dataArr(j, i) = CStr(retArr(i, j))
- Next
- Next
- ListBox1.List() = dataArr
- ' clean up
- rstNew.Close
- Cnxn.Close
- Set rstNew = Nothing
- Set Cnxn = Nothing
- Exit Sub
-
- ErrorHandler:
- ' clean up
- If Not rstNew Is Nothing Then
- If rstNew.State = adStateOpen Then rstNew.Close
- End If
- Set rstNew = Nothing
-
- If Not Cnxn Is Nothing Then
- If Cnxn.State = adStateOpen Then Cnxn.Close
- End If
- Set Cnxn = Nothing
-
- If Err 0 Then
- MsgBox Err.Source & "-->" & Err.Description, , "Error"
- End If
- End Sub
>'J#039&书信电报; |