簡體   English   中英

如何使用混合連接將數據從 SQL Server 轉儲到 MS Access 表中

[英]How to dump data from SQL Server into MS Access table using hybrid connections

我需要使用查詢從 SQL 服務器中提取數據,其中的語句存儲在 MS 訪問表中,並將數據轉儲到另一個表中。

有 2 個表, 01-MyStoredSQLs02-tmpTableData

問題是也有 2 個連接。 這就是為什么我稱之為混合。

我的最終結果是從 SQL Server 到tmpTableData的數據(查詢的結果,其語句存儲在 MyStoredSQLs 表中)

Public Sub DumpSQLServerData()
Dim conn As ADODB.Connection
On Error GoTo errMSG

Set conn = New ADODB.Connection

conn.ConnectionString = "DSN=myDSN; UID=MyID;Pwd=MyPWd"
conn.Open

Dim db As DAO.Database
Set db = CurrentDb


Dim rs As DAO.Recordset
'Retrieving the SQL Statment that is stored in the MyStoredSQLs table
Set rs = db.OpenRecordset("SELECT [Statement] FROM MyStoredSQLs WHERE ID=1")
Dim tmpSQL As String
Dim tmpINTOSQL As String


tmpSQL = rs(0)
'Hybrid statement 
tmpINTOSQL = "INSERT INTO tmpTableData" & tmpSQL

conn.Execute (tmpINTOSQL), dbFailOnError

conn.Close
rs.Close
db.Close

Set conn = Nothing
Set rs = Nothing
Set db = Nothing
errMSG:
    Debug.Print Err.Description   
End Sub

您不能指望 SQL Server 能夠神奇地訪問存儲在其他地方的表。

在 Access 中執行查詢,或者使用鏈接表,或者指定表的位置,例如

INSERT INTO tmpTableData SELECT Something FROM [ODBC;DSN=myDSN;UID=MyID;Pwd=MyPWd].Schema.TableInSQLServer

如果要在 SQL Server 上執行查詢,而不是 Microsoft Access,則 SQL Server 需要能夠訪問 Access 數據庫文件,並使用OPENROWSET查詢 Access 表。

作為替代方案,您可以創建一個直通查詢,並使用它來復制表:

Dim qd As DAO.QueryDef
Set qd = db.CreateQueryDef("~tmpQuery")
qd.Connect = "ODBC;DSN=myDSN;UID=MyID;Pwd=MyPWd"
qd.ReturnsRecords = True
qd.SQL = tmpSQL
Set qd = Nothing
db.Execute "INSERT INTO tmpTable SELECT * FROM [~tmpQuery]"
db.QueryDefs.Delete "~tmpQuery"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM