【问题标题】:How can I use the results of a query in VBA to update a table?如何使用 VBA 中的查询结果来更新表?
【发布时间】:2020-07-13 22:08:26
【问题描述】:

我确定我的处理方法不正确,因为数据库必须存在设计问题,但我现在愿意尝试任何事情。

在一个表单上,我有一个主子表单,其中包含不同类型土地的下拉列表和两个按钮(Prev 和 Next)。这个子表单数据源是一个名为 Section22_PMLU 的表

嵌套在这个子表单中的是另一个使用 PMLU_Code 链接到父子表单的子表单。此数据正在更新到表 Section22_Data。

当用户单击父子窗体上的下拉菜单并进行土地选择,然后在子子窗体中选择详细信息(土地特征)时,此数据会正确显示在数据表中。即使用户再次单击下拉菜单(不创建新记录)并添加子记录,这也会反映在数据表中。

问题在于 PMLU 表。如果我最初从嵌套子表单中进行选择并添加数据,则此记录将记录/显示在 PMLU 表中。如果我单击下拉字段并单击“添加新记录”或按 Ctrl+,然后从下拉列表中选择一个新项目 - 它会在表格中正确记录/显示。但是,如果我在没有先创建新记录的情况下进行选择,则此项目将复制先前添加的项目。当我尝试返回(上一个按钮)查看未显示的记录时。但是它仍然在数据表中。

为了纠正这个问题,我必须直接进入 PMLU 表并添加与数据表中的 PMLU 代码匹配的缺失 PMLU 代码。

如果我运行以下查询,我会得到那些缺少的 PMLU。如何使用结果用缺失代码填充 PMLU 表

SELECT Section22_2_Data.PMLU_Code, Section22_2_Data.PMLUType
FROM Section22_2_Data LEFT JOIN Section22_2_PMLU ON Section22_2_Data.[PMLU_Code] = Section22_2_PMLU.[PMLU_Code]
WHERE (((Section22_2_PMLU.PMLU_Code) Is Null))

【问题讨论】:

  • 通常我会使用 Unbound 下拉菜单 但是,此下拉菜单后面有 VBA 任何建议: Private Sub PMLU_Code_BeforeUpdate(Cancel As Integer) If NotAddDefault(Me.PMLU_Code.Value, _ IIf(IsNull(Me. PMLU_Code.OldValue), "", Me.PMLU_Code.OldValue), _ "section22_2", Me.NewRecord, "PMLU_Code", "PMLU 的值存在", False) 然后 Cancel = True Me.Undo Call GetToRec Else PMLUHolder = Me .PMLU_Code.Value End If End Sub

标签: ms-access vba


【解决方案1】:

我使用以下代码刷新了修复问题的表格

Private Sub btnRefresh_Click()

    Dim strSQL As String

    strSQL = "INSERT INTO Section22_2_PMLU ( PMLU_Code )
        SELECT DISTINCT Section22_2_Data.PMLU_Code
        FROM Section22_2_Data LEFT JOIN Section22_2_PMLU ON Section22_2_Data.[PMLU_Code] = Section22_2_PMLU.[PMLU_Code]
        WHERE (((Section22_2_PMLU.PMLU_Code) Is Null));"
    CurrentDb().Execute strSQL, dbFailOnError
    ' Next 3 only to ensure the append is commited to the table '
    ' before requerying '
    DoEvents
    DBEngine.Idle dbRefreshCache
    DoEvents

    Me.Requery

End Sub

【讨论】:

    猜你喜欢
    • 2021-10-18
    • 2014-12-02
    • 2021-10-25
    • 2015-08-03
    • 1970-01-01
    • 2021-11-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    相关资源
    最近更新 更多