0

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

在一个表单上,我有一个主子表单,其中包含不同类型的土地和两个按钮(上一个和下一个)的下拉列表。这个子表单数据源是一个名为 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))
4

1 回答 1

0

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

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
于 2012-10-30T00:39:10.850 回答