【问题标题】:Access - compare two tables and update or insert data in first tableAccess - 比较两个表并在第一个表中更新或插入数据
【发布时间】:2015-05-29 19:24:24
【问题描述】:

在我的 Access 数据库中,我有两个表:

表1:

    PersNum Name    Surname
    2321    Lenora  Springer
    2320    Donya   Gugino
    3326    Leland  Wittmer
    4588    Elmer   Mcdill

表2:

    PersNum Name    Surname
    2321    Lenora  Farney
    2320    Donya   Willimas
    3326    Leland  Wittmer
    4588    Maya    Mcdill
    7785    Yolanda Southall
    1477    Hailey  Pinner 

我需要找到一种方法来检查个人编号(字段“PersNum”),然后如果 PersNum 存在,则更新 Table1 中的姓名和姓氏。如果 PersNum 不存在,则在 Table1 中插入新行。

预期结果:

    PersNum Name    Surname
    2321    Lenora  Farney      (updated surname)
    2320    Donya   Willimas    (updated surname)
    3326    Leland  Wittmer     (without change)
    4588    Maya    Mcdill      (without change)
    7785    Yolanda Southall    (new person)
    1477    Hailey  Pinner      (new person)

我正在寻找任何基于 SQL/VBA/DAO/ADO 的解决方案。

【问题讨论】:

    标签: sql ms-access vba ado dao


    【解决方案1】:

    一个选项是“upsert”或组合的追加/更新查询。

    Smart Access 的这个旧技巧是我的最爱之一:

    一次查询更新和追加记录

    艾伦·比格斯

    您知道吗?您可以在 Access 中使用更新查询来访问两者 同时更新和添加记录?这很有用,如果你有 表的两个版本,tblOld 和 tblNew,并且您想要集成 从 tblNew 到 tblOld 的变化。

    按照以下步骤操作:

    1. 创建更新查询并添加两个表。通过将 tblNew 的键字段拖到 tblOld 的匹配字段上来连接两个表。

    2. 双击关系并选择包含来自 tblNew 的所有记录以及仅匹配 tbl旧的。

    3. 从 tblOld 中选择所有字段并将它们拖到 QBE 网格中。

    4. 对于每个字段,在更新到单元格中输入 tblNew.FieldName,其中 FieldName 与 tblOld 的字段名称匹配。

    5. 从视图菜单中选择查询属性并将唯一记录更改为 False。 (这会关闭 SQL 中的 DISTINCTROW 选项 看法。如果你留下这个,你只会在你的 结果,但您希望为每个要添加的新记录添加一个空白记录 到 tblOld。)

    6. 运行查询,您将看到对 tblNew 的更改现在位于 tblOld 中。

      这只会将已添加到 tblNew 的记录添加到 tblOld。 tblOld 中不存在于 tblNew 中的记录仍将保留在 tblOld。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 2015-11-12
      • 1970-01-01
      • 2019-06-23
      • 1970-01-01
      相关资源
      最近更新 更多