VB6模块将记录集传递给表单

时间:2015-03-31 21:47:12

标签: vb6 recordset

让我们称之为modUser。 在这个modUser中,我有一个ADODB记录集 现在从这个modUser,我想打开一个表单。让我们称它为frmUser2。 当这个frmUser2初始化时。我想使用modUser中已有的记录集。如何将此记录集从modUser传递到frmUser2?

我尝试在frmUser2下创建一个公共子。但是我得到一个错误,表示"运行时错误13类型不匹配"

这是一个片段

sSQL = "select name from employee"
rs.Open sSQL, ADOCon, adOpenKeyset
If rs.RecordCount > 1 Then
    frmUser2.PopulateList(rs)
End if

在frmUser2中我有公共功能(我也试过了)

Public Function PopulateList(rs As ADODB.Recordset)
    For Count = 0 To rs.RecordCount - 1
        LstModels.AddItem rs(0)
        rs.MoveNext
    Next
    rs.close
End Function

我试过show,我可以让表单出现,但是我没办法传递记录集。

frmUser2.Show

请帮忙。谢谢

1 个答案:

答案 0 :(得分:1)

我不喜欢你是如何尝试这样做的,但是在你想要做的事情上,首先在你的表单中创建一个公共Recordset属性,然后在显示表单之前从你的模块中为它分配记录集

模块代码:

Dim objForm As frmUser2

sSQL = "select name from employee"
rs.Open sSQL, ADOCon, adOpenKeyset
If rs.RecordCount.EOF = False Then
    Set objForm = New frmUser2
    frmUser2.Recordset = rs
    frmUser2.Show
End if

表格代码:

Private Sub Form_Load()

    If Not Recordset Is Nothing Then
        PopulateList
    End If
End Sub

Public Function PopulateList()

    Recordset.MoveFirst 'defensive, make sure we're on the first record
    LstModels.Clear
    Do While Recordset.EOF = False
        LstModels.AddItem Recordset(0)
        Recordset.MoveNext
    Next
    Recordset.Close

End Function

我认为模块最好有一个返回员工记录集的公共方法。您的表单会在需要数据时调用该方法。 Set rsEmployees = modUser.GetEmployees()