【问题标题】:update through vba new record, currently opened in a form通过vba更新新记录,目前以表格形式打开
【发布时间】:2014-06-27 14:37:02
【问题描述】:

我有一个关于通过 VBA 更新新记录的问题。 首先 - 假设。 我制作了一个名为“分类”的表格,它显示了一组记录和一个显示相关库存的 sobreport。我已经把按钮放在上面:“添加新记录”。这将打开第二个表单“inventory_details”,该表单旨在输入和查看特定于库存的数据。该库存属于该特定分类类型。所以 - 我已经通过 DoCmd.OpenForm 将 assortment_id 传递给 inventory_details 表单,例如:

    DoCmd.OpenForm stFormName, , , , acFormAdd, , Me.assortment_id

“inventory_details”表单的数据源是一个查询,其中包含通过inventory_id 连接到库存表的分类表。将 OpenArgs 传递的这个 id 添加到当前打开的新记录并刷新表单以显示相关分类数据的最佳方法是什么? 我试图这样做:

    Private Sub Form_Open(Cancel As Integer)
        Dim assortmentId As Integer
        If (Not IsNull(Me.OpenArgs)) Then
            assortmentId = Me.OpenArgs()
            Set rst = Me.Recordset
            rst.Edit
            rst.assortment_id_assortment = assortmentId
            Me.Requery
        End If
    End Sub

但它给了我一个错误“3021”没有当前记录”...

【问题讨论】:

    标签: forms vba ms-access recordset


    【解决方案1】:

    这里有一些建议,

    。确保你定义了变量 rst

    。检查 EOF 条件以确保您的记录集包含行

    If rst.EOF Then
        MsgBox "The Recordset is empty."
    End If
    

    Why clone an MS-Access recordset?

    【讨论】:

    • 感谢您的建议,我发现在 acFormAdd 模式下打开“inventory_details”表单时记录集为空。这就是原因。我不知道在这种情况下何时创建此记录集以及如何强制执行此过程。
    猜你喜欢
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多