我有一个带有组合框的表单,我用来自访问数据库的记录填充(我使用链接表)。我想要做的是在程序的整个生命周期中将记录存储在类的实例中,而不是每次用户选择组合框时查询表。现在我从私有子调用一个函数,该函数返回DAO记录集数据,这是我想要的,但我的问题是,我如何将数据从函数记录集传递给公共DAO.Recordset,假设如果这是可能的话,它将在运行程序的整个生命周期中保存记录集数据。当我运行代码并完成Watch输出窗口中的Public Rs()时说; Recordset(0到-1)和No Variables,我不知道如何纠正这个问题。
这是我的代码:
Private Sub cmdGetRecordset_Click()
Dim strDescription As String
Dim strModel As String
Dim rst As DAO.Recordset
Set rst = getdevices()
Do While Not rst.EOF
strDescripton = rst!DESC
strModel = rst!MODEL
Debug.Print strDescription & " " & strModel
rst.MoveNext
Loop
'rst.Close'
'Set rst = Nothing'
End Sub
'' '' ''
Option Compare Database
Public Rs() As DAO.Recordset
Function getdevices() As DAO.Recordset
Dim Rs As Object
Dim CurDatabase As Object
connectDatabase
Set CurDatabase = CurrentDb
Set Rs = CurDatabase.OpenRecordset("SELECT * FROM tblCDA")
Set getdevices = Rs
closeDatabase
End Function
答案 0 :(得分:1)
说实话,我并不完全明白你的目标。根据您尝试做的事情,有很多方法可以解决这个问题。
1)你只是在表单加载时预先填充控件吗?
每次加载表单时在Form_Load事件中运行一系列查询,并将结果传递给每个组合框作为其源,或者在打开数据库时创建一个包含值的临时表并查询temp表
2)您是否尝试捕获在表单或报表之间移动时用户选择的持久状态?
使用临时表或动态数组捕获用户选择(组合框的值)并查询表或在引用其他位置的值时遍历数组。
3)您是否尝试根据用户选择动态更改组合框值?
可悲的是,我认为必须重新查询源数据是唯一的选择。您可以从各种表中获取所有数据并使用数组将其存储在内存中,然后根据需要迭代数组以更改组合框值,但这将占用大量内存,具体取决于数据。