从不同的记录集动态分配控制源

时间:2014-01-16 10:10:09

标签: vba access-vba ms-access-2003 recordset

我的访问权限中包含以下VBA代码。

Dim subform As Object
Dim formFilter As String

formFilter = "..."   'a SQL statement

Set subform = Me!my_subform.Form
subform.RecordSource = formFilter

subform.field1.ControlSource = "f1"
subform.field2.ControlSource = "f2"
subform.field3.ControlSource = "f3"

Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT TOP 1 f4 FROM my_table " _
                           & "WHERE tableF1= '" & [f1] & "' AND tableF2 = '" & [f2] & "' " _
                           & "ORDER BY tableF5 DESC")
subform.field4.ControlSource = rs(0)

我首先将子表单中的前3个字段绑定到记录源的字段中。然后我需要将第4个字段绑定到不同的记录集。此记录集必须引用子表单的前两个字段。

但是,我得到了运行时错误2465.访问无法引用我的OpenRecordSet语句的[f1]和[f2]字段。

我该如何解决这个问题?

我在数据表视图中使用此表单。所以我需要引用的不是field1和field2的单个值,而是必须链接整个记录列。

非常感谢。

1 个答案:

答案 0 :(得分:0)

(从早期编辑到问题,自回滚以来:)

显然,本案例中的解决方案是在 子表单 On Load事件处理程序中使用以下代码,而不是 主要表格

Dim db As Database
Dim rs As Recordset

Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT TOP 1 f4 FROM my_table " _
                           & "WHERE tableF1= '" & [f1] & "' AND tableF2 = '" & [f2] & "' " _
                           & "ORDER BY tableF5 DESC")
subform.field4.ControlSource = rs(0)

因为[f1]和[f2]控件位于子窗体上,因此无法从主窗体的类模块代码中看到。