[英]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 字段的选项:
运行更新操作 SQL
打开表单的 RecordsetClone 的记录集并循环遍历该记录集并更改 nr_peso 字段的值 - RecordsetClone 中的更改将立即反映在表单中
代码物理移动到表单上的每个记录并修改字段值
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.