VB6中的空数据网格问题

VB6中的空数据网格问题,vb6,datagrid,ado,Vb6,Datagrid,Ado,最近,我遇到了一个问题;当我将记录集绑定到datagrid并运行应用程序时,即使记录集有数据,也不会填充datagrid 我使用以下代码 Option Explicit Dim conn As New ADODB.Connection Dim cmd As New ADODB.Command Dim recordset As New ADODB.recordset Private Sub InitializeConnection() Dim str As String str = _

最近,我遇到了一个问题;当我将记录集绑定到datagrid并运行应用程序时,即使记录集有数据,也不会填充datagrid

我使用以下代码

Option Explicit
Dim conn As New ADODB.Connection
Dim cmd As New ADODB.Command
Dim recordset As New ADODB.recordset





Private Sub InitializeConnection()
Dim str As String

str = _
   "Provider=Microsoft.Jet.OLEDB.4.0;" & _
   "Data Source=" + App.Path + "\phonebook.mdb;" & _
   "Persist Security Info=False"

    conn.CursorLocation = adUseClient

    conn.ConnectionString = str

    conn.Open (conn.ConnectionString)


End Sub
Private Sub AbandonConnection()
    If conn.State <> 0 Then
        conn.Close
    End If
End Sub
Private Sub Persons_Read()

    Dim qry_all As String

   ' qry_all = "select * from person,web,phone Where web.personid = person.id And phone.personid = person.id"
    qry_all = "SELECT * FROM person"

    Call InitializeConnection

    cmd.CommandText = qry_all
    cmd.CommandType = adCmdText

    Set cmd.ActiveConnection = conn


    If conn.State = 1 Then

       Set recordset = cmd.Execute()

    End If

    Call BindDatagrid


    Call AbandonConnection


End Sub
Private Function Person_Add()

End Function
Private Function Person_Delete()

End Function
Private Function Person_Update()

End Function
Private Sub BindDatagrid()



   Set dg_Persons.DataSource = recordset


    dg_Persons.Refresh
End Sub

Private Sub cmd_Add_Click()
    Person_Add
End Sub

Private Sub cmd_Delete_Click()
    Person_Delete
End Sub

Private Sub cmd_Update_Click()
    Person_Update
End Sub

Private Sub Form_Load()
    Call Persons_Read

End Sub

Private Sub mnu_About_Click()
    frm_About.Show

End Sub
选项显式
Dim conn作为新的ADODB连接
Dim cmd作为新的ADODB.Command
将记录集设置为新ADODB.recordset
私有子初始化连接()
作为字符串的Dim str
str=_
“Provider=Microsoft.Jet.OLEDB.4.0;”_
“数据源=“+App.Path+”\phonebook.mdb;”和_
“持久化安全信息=False”
conn.CursorLocation=adUseClient
conn.ConnectionString=str
连接打开(连接字符串)
端接头
专用子连接()
如果连接状态为0,则
关闭连接
如果结束
端接头
私人附属机构
调暗qry_全部为字符串
'qry_all=“从个人、网络、电话中选择*,其中web.personid=person.id和phone.personid=person.id”
qry_all=“选择*来自个人”
调用初始化连接
cmd.CommandText=qry\u all
cmd.CommandType=adCmdText
设置cmd.ActiveConnection=conn
如果连接状态=1,则
Set recordset=cmd.Execute()
如果结束
调用BindDatagrid
呼叫放弃连接
端接头
私人职能人员_Add()
端函数
私人职能人员_Delete()
端函数
私人职能人员_更新()
端函数
私有子BindDatagrid()
Set dg_Persons.DataSource=记录集
总人事部
端接头
专用子命令\添加\单击()
人名
端接头
私有子命令\u删除\u单击()
人名(u)删除
端接头
私有子命令\更新\单击()
人员更新
端接头
专用子表单_加载()
叫人读
端接头
私有子mnu关于点击()
关于节目
端接头

提前感谢

查询后没有立即关闭连接就解决了这个问题

对我来说,在设置连接超时后,我可以通过在代码中添加这一行来纠正这个问题

conn.CursorLocation = adUseClient
这解决了我的问题