首页 > 解决方案 > 如何将结果集中的值分配给表单中的字段?

问题描述

我有一个返回 N 结果集的查询。我想使用此查询为表单 OnCurrent 上的字段分配值。现在,我的错误说是Cannot perform this operation. Run-Time Error 3032

因此,如果我有,比如说在我的查询中返回 5 条记录,我想一个接一个地在我的表单(数据表视图)中分配一个具有该值的列。

我的方法看起来像:

Private Sub ConfigureScore()
  Dim resultSet As DAO.RecordSet
  Set resultSet = CurrentDb.OpenRecordset("MyQuery")
  If Not (resultSet.EOF And resultSet.BOF) Then
   resultSet.MoveFirst
   Do Until resultSet.EOF = True
   Me.Field.Value = resultSet![Name]
   resultSet.Update
   resultSet.MoveNext
 Loop
 End If
 resultSet.Close
 Set resultSet = Nothing
End Sub

所以,在 myMyQuery中,返回的值是 Name 它看起来像SELECT Name FROM...。该查询仅返回一列,我想获取这些值并填充我的表单Field列。

标签: vbams-access

解决方案


您不能在未绑定的表单中创建多行。

在表单中填充“行”的方法是将表单的RecordSource设置为表或查询(“绑定表单”)并将表单详细信息部分中的文本框等控件“绑定”到该查询的字段设置它们ControlSource属性添加到该查询的字段的名称。不需要 VBA。

在您的场景中,表单应该绑定到MyQuery,详细信息部分应该包含一个绑定到 field 的文本框Name


推荐阅读