将 Access 表中的数据插入 ODBC 链接表 (SQL Server)

Insert data from Access table into ODBC link table (SQL server)

提问人:Thanapol Pasokpakdee 提问时间:5/25/2023 最后编辑:Dale KThanapol Pasokpakdee 更新时间:5/25/2023 访问量:81

问:

我尝试了许多解决方案来将数据从 Access 表插入到 ODBC 链接表 (SQL Server) 中。 问题是 SQL Server 上的 ID 列表,该表与 ODBC 链接表的链接是设置标识。 所以我无法从 Access 表中插入 ID 列。我尝试测试“设置identity_insert开启”,但事实并非如此 通过访问查询容器或 VBA 插入。

示例 VBA 代码

情况 1 : 可以插入

Sub InsertData()
    On Error GoTo ErrorHandler
    
    Dim strSQL As String
    
    ' Set up the INSERT INTO statement with a subquery
    strSQL = "INSERT INTO odbc_link_table_from_sql_server (col2) " & _
             "SELECT col2 FROM access_table"
    
    ' Execute the SQL statement
    CurrentDb.Execute strSQL, dbFailOnError
    
    MsgBox "Data inserted successfully!"
    
    Exit Sub
    
ErrorHandler:
    Debug.Print err.description
End Sub

输出:数据插入成功!

情况 2 : 无法插入

Sub InsertData()
    On Error GoTo ErrorHandler
    
    Dim strSQL As String
    
    ' Set up the INSERT INTO statement with a subquery
    strSQL = "INSERT INTO odbc_link_table_from_sql_server (ID,col2) " & _
             "SELECT ID,col2 FROM access_table"
    
    ' Execute the SQL statement
    CurrentDb.Execute strSQL, dbFailOnError
    
    MsgBox "Data inserted successfully!"
    
    Exit Sub
    
ErrorHandler:
    Debug.Print err.description
End Sub

输出:发生错误:ODBC--调用失败。48

有人有插入数据的解决方案吗?

我尝试在访问VBA和访问查询容器中使用,但没有工作。 我希望将访问表上 ID 列中的数据插入到 ODBC 链接表中。按照以下规则set identity_insert on

  1. 不要更改或修改 SQL Server talble 的结构
  2. 不要循环插入

最后,我希望使用 Access 查询容器来插入数据。

sql-server vba odbc ms-access-2010

评论

2赞 siggemannen 5/25/2023
我认为,您不能将标识插入到链接表中,因为设置insert_identity必须在查询的本地端运行。但是,你为什么要这样做。重新思考你的设计,要么删除列的标识部分,这样你就可以在你的心内容中插入明确的值,或者只是跳过手动设置标识列,这样它就会自动填充
0赞 Thanapol Pasokpakdee 5/25/2023
@siggemannen感谢您的评论。不幸。我无法编辑 sql server 上的表。我想使用 access_table 中的 ID 列,因为我使用该列来提取数据并在表访问中引用其他表。
0赞 siggemannen 5/25/2023
好的,但是其他人可以编辑表格吗?它是从几个地方使用的吗?
0赞 Thanapol Pasokpakdee 5/25/2023
@siggemannen是测试环境。我不知道它从几个地方使用过。但是删除列的标识部分,这只是一个解决方案?
2赞 Andre 5/25/2023
Siggemannen 是正确的 - 您的要求行不通。如果只有 Access DB 插入到此表中,请删除 IDENTITY,然后您可以从 Access 中插入 ID。-- 如果其他程序插入到表中,则即使您解决了当前的问题,其自动生成的 ID 迟早也会与 Access 中的 ID 发生冲突。

答: 暂无答案