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()
我们称它为 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()