Vba 简单使用记录集查找报表上的文本框值

Vba 简单使用记录集查找报表上的文本框值,vba,ms-access,recordset,Vba,Ms Access,Recordset,我试图学习如何在VBA中使用记录集,从这里开始。我想从ProductVars表中查找该值,并填充到每个记录[ProductID]的报表上的文本框中 我想要的值是字段[Name]=“Hinging”的位置,我需要它将字段[value]中的值发送到报表上的txtHinge文本框 这是我目前的代码 Private Sub Report_Load() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb 'Open a

我试图学习如何在VBA中使用记录集,从这里开始。我想从ProductVars表中查找该值,并填充到每个记录[ProductID]的报表上的文本框中

我想要的值是字段[Name]=“Hinging”的位置,我需要它将字段[value]中的值发送到报表上的txtHinge文本框

这是我目前的代码

Private Sub Report_Load()

Dim db As DAO.Database
Dim rs As DAO.Recordset

Set db = CurrentDb

'Open a table-type Recordset
Set rs = db.OpenRecordset("ProductVars")

'Find the value of Hinging from the Name field Name and populate to txtHinge 
for the ProductID

Do Until rs.EOF
Me.txtHinge = rs!Name.Hinging.Value
rs.MoveNext
Loop

End Sub
任何帮助都将不胜感激


文本框控件中的源:

=DLookup(“[Value]”,“[PRODUCTVARS]”,“[Name]='Hinging”和ProductID=“&[ProductID])

或者,如果必须考虑多个动态参数:

=DLookup(“[Value]”,“[PRODUCTVARS]”,“[Name]=”&[Name]&”和ProductID=“&[ProductID])


如果是后一种情况,则可能只是在ReportRecordSource中使用复合联接包含PRODUCTVARS表

您的代码有许多会产生编译错误的奇怪之处。您可能根本不应该在VBA中执行此操作,而应该修改报表记录源或文本框的控制源。通常我会在报表的控制源中作为DLookup执行此操作,但我有另一种情况,即条件语句中的DLookup不起作用,因此我尝试学习有关记录集的内容。这只是一个起点。关于学习@ErikvonAsmuth?名称和值的最佳方法的任何建议都是Access/VBA中的特殊词语。建议不要将它们用作任何东西的名称。无法在加载事件中动态设置报表上textbox的值。可以从textbox ControlSource调用函数以返回值。这意味着DLookup应该能够完成您想要的。编辑问题以显示报告记录源。第一个选项适用于我的报告。谢谢顺便说一句,您提到要将其添加到ControlSource,但是如果我想将其添加到VBA呢?我试过了!。txthings.Value=DLookup(“[Value]”,“[PRODUCTVARS]”,“[Name]=“Hinging”和ProductID=“&[ProductID]),但这不起作用。无法在带有VBA的报表中设置textbox的Value属性。