Ms access 从不同的记录集中动态分配控制源
我的access中有以下VBA代码Ms access 从不同的记录集中动态分配控制源,ms-access,vba,recordset,ms-access-2003,Ms Access,Vba,Recordset,Ms Access 2003,我的access中有以下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" subfo
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个字段绑定到记录源的字段。然后我需要将第四个字段绑定到另一个记录集。此记录集必须引用我的子窗体的前两个字段
但是,我得到了一个运行时错误2465。Access无法引用我的OpenRecordSet语句的[f1]和[f2]字段
我该如何解决这个问题
我在数据表视图中使用此表单。所以我需要引用的不是field1和field2的单个值,而是必须链接整个记录列
非常感谢。(从前面的编辑到问题,从回滚到:)
显然,这种情况下的解决方案是在加载时事件处理程序中为子窗体使用以下代码,而不是主窗体
Dim db作为数据库
将遥感器作为记录集
Set db=CurrentDb
Set rs=db.OpenRecordset(“从my_表中选择前1个f4”_
&“其中tableF1=”&[f1]&“,tableF2=”&[f2]&“”_
&“按表5说明订购”)
subform.field4.ControlSource=rs(0)
因为[f1]和[f2]控件位于子窗体上,因此在主窗体的类模块代码中不可见。不能将窗体绑定到两个不同的记录集。您应该能够将表单绑定到单个记录集,该记录集使用SQL语句中的表联接访问两个不同的表。但请注意,在SQL中使用联接的记录集通常是只读的。@HK1。谢谢但我不能使用JOIN,因为我的field4有超过1条匹配记录。使用JOIN将生成重复的字段1、字段2和字段3。这就是为什么在我的第二个记录集中,我只需要选择前1行,而不是在问题中添加解决方案,你应该将其作为答案发布。