【问题标题】:How do I update fields from one table with values from another table如何使用另一个表中的值更新一个表中的字段
【发布时间】:2020-07-13 20:17:11
【问题描述】:

我正在尝试使用第二个表中两个字段的值更新一个表中的两个字段,但没有链接两个表的主键。

第二个表没有主键,因为它是通过 Transfersheet 方法创建的,只是为了从 Excel 将数据导入其中。

这是我目前的代码(目前这段代码没有做任何事情):

 SQL = "MERGE TableA AS Target" & _
      " USING TableB AS Source" & _
      " ON " & _
      "(Target.Field1=Source.Field1,Target.Field2=Source.Field2)" & _
      " WHEN NOT MATCHED BY Target" & _
      " THEN UPDATE (Field1,Field2)" & _
      " VALUES (Source.Field1,Source.Field2)"

【问题讨论】:

  • 请详细说明您所说的“问题”是什么意思。
  • 问题是更新没有做任何事情。我已经测试过:在 Excel 工作表中,Field1 的一个值为“1111”,Field2 的值为“Microsoft”,即一行。在我的数据库中,仅输入了 field2(“Microsoft”),Field1 为空白。它想在 Field1 中插入值“1111”。就是这样。
  • @KevinHogg,我在第二张桌子上没有身份证,我已经提到过。我正在从 Excel 电子表格进行更新 - 此工作表的数据通过 TransferSheet 方法导入到新表中,并且 Access 不会创建 ID 号字段。请参阅我为 TrasferSheet 方法代码编辑的问题,它在 SQL 之前执行。
  • 首先删除 TableA.Field1 = tableB.Field1 ...您正在通过这些进行连接,它们已经与正在连接的相同,第二您确定表中的列是相同的类型吗?那是什么? nvarchar?诠释?请第三次输入一些输入,以便我们实际上可以为您指明正确的方向

标签: sql ms-access vba ms-access-2010


【解决方案1】:

为此使用MERGE。 https://technet.microsoft.com/en-us/library/bb522522(v=sql.105).aspx

语法:

MERGE  [AS TARGET]
USING  [AS SOURCE]
ON 
[WHEN MATCHED 
THEN  ]
[WHEN NOT MATCHED [BY TARGET]
THEN  ]
[WHEN NOT MATCHED BY SOURCE
THEN  ];

您不必声明所有可能的比较结果。您也可以在所有这些上定义相同的操作。我不确定你想在匹配方面达到什么目标。

【讨论】:

  • 你能把它编辑到我的例子中吗,不确定我应该如何构建 Merge ?
  • 我认为您上错了网站。这个社区的目的不是互相做功课,而是提供一些想法/线索/起点。请仔细阅读MERGE的文档,相信你会找到方法的。
  • 我会试试的,这并不是说你在做我的功课。但是对于像我这样的初学者来说解释有点困难。感谢提供的链接。
  • 能否请您检查我更新的问题,我尝试按照您提供的链接中的说明进行操作,但 MERGE 在 Access 中不起作用。
【解决方案2】:

我终于设法解决了这个问题。这是唯一对我有用的合成器:

SQL = " UPDATE TableA" & _
      " INNER JOIN TableB" & _
      " ON TableB.Field1=TableA.Field1 OR" & _                                                 " TableB.Field2=TableA.Field2" & _
      " SET TableA.Field1=TableB.Field1, TableA.Field2=TableB.Field2"

如果其中一个在目标表中为空,而不在源表中,则此语句成功更新两个字段。

感谢您的所有努力,我希望这对某人有用,在 VBA 中编写 SQL 时,Access 是一块相当难的石头。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多