帮我看看以下代码
'按记录集填充GRID
Public Sub FillGridByRecord(Grid As MSHFlexGrid, rst As ADODB.Recordset)
Dim i, j As Integer
'问题在这里,rst传近来不是打开的,怎么样打开?
' If rst.State = adStateClosed Then rst.Open ??????
If rst.RecordCount < 1 Then Exit Sub
Grid.Rows = rst.RecordCount + 1
Grid.Cols = rst.Fields.Count
For i = 0 To Grid.Rows - 1
For j = 0 To Grid.Cols
Grid.TextMatrix(i, j) = rst.Fields(j)
Next j
rst.MoveNext
Next i
rst.Close
End Sub
问题点数:0、回复次数:5Top
1 楼zhsu(不懂生活的人)回复于 2003-12-04 14:12:17 得分 0
是否实例化了?Top
2 楼Rick110AAA(海牛猪猪 And HerosⅢ之比蒙)回复于 2003-12-04 14:13:17 得分 0
那就先打开了再调用函数啊!
Dim rst As Adodb.Recordset
Dim objCon As New Adodb.Connection
objCon.Open ···
rst.Open "Select ···",objCon,···
Call FillGridByRecord(···,rst)Top
3 楼yoki(小马哥--鬓微霜,又何妨)回复于 2003-12-04 14:17:10 得分 0
调用前需要打开Top
4 楼chao778899(220330)回复于 2003-12-04 14:33:25 得分 0
upTop
5 楼zhlm119(thinker)回复于 2003-12-04 15:07:50 得分 0
各位,请再看看以下代码:
Public Function ReturnRecord(rSql As String, Cn As ADODB.Connection) As Recordset
On Error GoTo SqlErr:
Dim rst As New ADODB.Recordset
If Cn.State = adStateClosed Then Cn.Open
rst.Open rSql, Cn, adOpenStatic, adLockReadOnly
Set ReturnRecord = rst
rst.Close
Cn.Close
Set rst = Nothing
Exit Function
SqlErr:
MsgBox "执行以下语句出错:" & vbCrLf & rSql, vbExclamation, "警告"
If rst.State = adStateOpen Then rst.Close
Set rst = Nothing
If Cn.State = adStateOpen Then Cn.Close
Set ReturnRecord = Nothing
End Function
Public Sub FillGridByRecord(Grid As MSHFlexGrid, rst As ADODB.Recordset)
Dim i, j As Integer
'问题在这里,rst传近来不是打开的,怎么样打开?
' If rst.State = adStateClosed Then rst.Open ?????
If rst.RecordCount < 1 Then Exit Sub
Grid.Rows = rst.RecordCount + 1
Grid.Cols = rst.Fields.Count
For i = 0 To Grid.Rows - 1
For j = 0 To Grid.Cols
Grid.TextMatrix(i, j) = rst.Fields(j)
Next j
rst.MoveNext
Next i
rst.Close
End Sub
我是这样调用的:
dim rstMid as ADODB.Recordset
Set rstMid = ReturnRecord(strSql, CnDB)
FillGridByRecord Me.Grid, rstMid
怎么的话怎么打开连接?Top




