【问题标题】:VB6 module to pass recordset to formVB6模块将记录集传递给表单
【发布时间】:2015-04-01 07:12:50
【问题描述】:

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

我尝试在 frmUser2 下创建一个公共子节点。但我收到一条错误消息,显示“运行时错误 13 类型不匹配”

这是一个sn-p

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

在 frmUser2 我有公共功能(我也试过 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

请帮忙。谢谢

【问题讨论】:

    标签: vb6 recordset


    【解决方案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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2012-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多