繁体   English   中英

如何使用 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

表格和表格

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

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

  1. 运行更新操作 SQL

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM