让我们称之为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
请帮忙。谢谢
答案 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()