如何使用 VBA 将多行记录集加载到 Access 表单中

How to load a multiline recordset into an Access form with VBA

我正在运行一个查询(它返回正确的数据)但是我如何循环记录集并在表单中添加带有 VBA 的每一行?因为它目前正在重复添加最后一行。

Private Sub buscarReservasFio()
Dim strSQL As String
strSQL = "SELECT * FROM tblReservasFio WHERE fk_solicitacao = " & "'" & arrParameters(0) & "'"
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenDynaset, dbSeeChanges)

If rs.BOF Or rs.EOF Then
    'to-do insert
    MsgBox ("Insert")
Else
    Do Until rs.EOF
        DoCmd.GoToRecord , , acNewRec
        Me.ds_funcao = rs.Fields("ds_funcao").Value
        Me.fk_titulo = rs.Fields("fk_titulo").Value
        Me.nr_cor = rs.Fields("nr_cor").Value
        Me.nr_peso = rs.Fields("nr_peso").Value
        Me.dt_liberacao = rs.Fields("dt_liberacao").Value
        Me.dt_baixa = rs.Fields("dt_baixa").Value
        rs.MoveNext
    Loop
End If

rs.Close
db.Close
Set rs = Nothing
Set db = Nothing

End Sub

显然,表单绑定到 table 但您的代码正在填充 UNBOUND 控件。这是我可以复制您的输出的唯一方法 - 这应该是预期的。显示多行相同数据的原因是因为控件(BOUND 或 UNBOUND)对每条记录重复,并且由于只有一组控件,相同的数据显示在所有行的 UNBOUND 控件中 - 来自记录集循环的最后一条记录。逐步调试并观察表单上的数据变化。 GoToRecord 操作没有意义,因为没有数据输入到 BOUND 控件。没有那条线的结果是一样的。

为了显示来自 table 的多条记录,将控件绑定到字段。然后,在表单首次打开时使用新计算值修改 nr_peso 字段的选项:

  1. 运行 更新操作 SQL

  2. 打开表单 RecordsetClone 的记录集并循环遍历该记录集并更改 nr_peso 字段的值 - RecordsetClone 中的更改将立即反映在表单中

  3. 代码物理移动到表单上的每条记录并修改字段值