使用另一个Access数据库中的字段更新查询

时间:2018-06-14 20:00:54

标签: sql ms-access

是否可以使用Update2中的Table2.Field2值更新Database1中的Table1.Field1,并在Access中使用更新查询和内部联接?两个数据库都在Access中。

我读过有关IN子句(https://msdn.microsoft.com/en-us/library/bb177907.aspx)但无法在更新查询中正确实现它。

此代码不起作用,但它提供了我想要做的事情的想法:

 UPDATE Table1 INNER JOIN Table2 ON Table1.ID=Table2.ID IN "C:\Folder\Database.accdb"
SET Table1.Field1 = Table2.Field2

它不起作用,因为表2位于“C:\ Folder \ Database.accdb”中,但Table1位于我运行更新查询的数据库中。

谢谢!

2 个答案:

答案 0 :(得分:2)

您可以使用子查询在更新中使用IN子句。这样,它明确哪个表在哪个数据库中。

UPDATE Table1 INNER JOIN (SELECT * FROM Table2 IN "C:\Folder\Database.accdb") t2 ON Table1.ID=t2.ID 
SET Table1.Field1 = t2.Field2

答案 1 :(得分:0)

尝试以下代码。

步骤: 1.创建linkedTable 2.运行sql来更新你的表 3.从第1点删除linkedTable

Sub UpdateTAble()
    Dim sql As String
    Dim tbDef As DAO.TableDef

    'Create new table definition
    Set tbDef = CurrentDb.CreateTableDef("Table2")

    'SourceTableName is a table name from soure db.
    tbDef.SourceTableName = "Table2"
    'Connect is full path to your source db.
    tbDef.Connect = "MS Access;DATABASE="C:\Folder\Database.accdb;"

    CurrentDb.TableDefs.Append tbDef
    CurrentDb.TableDefs.Refresh

    'Table2 is linked table but save in main DB - can be used without IN
    sql = "Update table1 INNER JOIN Table2 ON Table2.ID = Table1.ID set table1.Field1 = table2.Field1"
    CurrentDb.Execute sql

    CurrentDb.TableDefs.Delete "Table2"
End Sub