VB6模块传递记录集形成

VB6 module to pass recordset to form

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

我尝试在 frmUser2 下创建一个 public 子目录。但是我收到一条错误消息 "Run time error 13 type mismatch"

这是一个片段

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

在 frmUser2 中我有 public 函数(我也试过 sub)

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

请帮忙。谢谢

我不喜欢你如何尝试这样做,但是根据你想做的事情,首先在你的表单中创建一个 public 记录集 属性 并分配在显示表单之前从您的模块向其记录集。

模块代码:

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

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