【问题标题】:Compare two tables in VBA and insert value比较VBA中的两个表并插入值
【发布时间】:2016-10-20 06:44:55
【问题描述】:

我想比较来自两个不同数据库的数据并在原始数据库中插入缺失值。

tableA 我有姓名、姓氏和地址,在其他表中,tableB 我有姓名、姓氏、地址、电话、邮编、职务、唯一代码。我需要将tableA 中的姓名、姓氏和地址与tableB 进行比较,如果找到匹配项,则需要在tableA 中添加一个字段并将该字段值存储在该特定记录中。

澄清一下,如果我尝试将 tableA 中的 "John","Smith","23 May Road" 与 tableB 匹配并找到匹配项,那么我需要更新来自 tableA 的 John Smith 记录添加字段标题、电话、邮编和唯一代码。我尝试了内部连接但没有运气,并且花了将近一天的时间使用不同的组合。

请谁对加入有更好的把握。

问候..

【问题讨论】:

  • 这看起来很像一个 SQL 问题。你的问题是 SQL(在这种情况下,标记问题 [SQL])还是它周围的 VBA - 如果是后者,你为什么要使用 VBA?!
  • 我正在使用 VBA,因为我在 Access 中创建小型应用程序

标签: ms-access vba


【解决方案1】:

您可以在不使用任何代码/VBA 的情况下执行此操作。只需构造一个适当的查询。

按照以下步骤操作:

  1. 创建一个新查询并添加两个表
  2. 拖动您想要的字段 从 tableA 匹配到 tableB 中的相应字段
  3. 在“查询”菜单下将查询类型更改为更新查询
  4. 通过从表中向下拖动,将需要更新的字段从表 B(不是表 A)添加到数据行
  5. 在“更新至:”行中,输入表 A 中的字段名称,其中包含您希望用于更新表 B 的数据。您需要包含文件名。例如,在电话下,键入“tableA.phone”。 Access 会将其更改为“[TableA].[phone].
  6. 通过从菜单中选择查询|运行来执行查询。

如果你有兴趣,这里是生成的Access SQL:

UPDATE tableA 
LEFT JOIN tableB ON (tableA.Address = tableB.Address) AND 
(tableA.Surname = tableB.Surname) AND (tableA.Name = tableB.Name) 
SET tableB.Phone = [tableA].[phone], 
tableB.Zip = [tableA].[zip], 
tableB.Title = [tableA].[title], 
tableB.UniqueCode = [tableA].[uniqueCode];

当然,您可以使用 VBA 解决方案,但这似乎是最直接的方法。

【讨论】:

  • 感谢您指出正确的方向,tableA 和 tableB 都一直在变化,我还需要更改表格以添加额外的字段,因此 VBA 是要走的路
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多