用于将ACCESS表传输到SQL Server的VBA代码

时间:2016-09-30 19:49:49

标签: vba access-vba

我试图将我的访问表数据传输到SQL服务器但是我收到一个错误,说

  

对象变量或未设置块变量

我已经将Access数据库与SQL服务器连接,但现在面临使用VBA代码将数据传输到SQL Server的问题。

你能帮帮我吗?

这是我的代码:

Public Sub ADOtest()

   Dim ADOConn As New ADODB.Connection
   Dim ADOCom As New ADODB.Command


   On Error Resume Next

   ADOConn.ConnectionString = "Driver={SQL Server};Server=IT-TEMP2-8470P\SQLEXPRESS2014;Database=Discrepancy;Trusted_Connection=True;"
   ADOConn.Open

   Debug.Print ADOConn.State

   Dim db As Database
   Dim Discrepancy As Database
   Set db = Discrepancy
   Dim ID As Variant

   db.Execute "INSERT INTO [ODBC;DRIVER=SQL Server;SERVER=IT-TEMP2-8470P\SQLEXPRESS2014;DATABASE=Discrepancy].SFTransfersDB ( ID, TO ) SELECT ID,TO FROM SFTransfersDB" 


End Sub 

我在最后一行收到错误:

db.Execute "INSERT INTO [ODBC;DRIVER=SQL Server;SERVER=IT-TEMP2-8470P\SQLEXPRESS2014;DATABASE=Discrepancy].SFTransfersDB ( ID, TO ) SELECT ID,TO FROM SFTransfersDB" 

3 个答案:

答案 0 :(得分:1)

您声明了两个数据库变量,但没有初始化它们(您没有将它们设置为任何内容):

Dim db As Database
Dim Discrepancy As Database

所以这个

Set db = Discrepancy

相同
Set db = Nothing

所以当您尝试使用db时,您会收到db未设置的错误,而不是错误。

答案 1 :(得分:1)

您似乎正在尝试临时分布式查询。如果服务器允许,请考虑在ADO连接后执行此语句。无需调用Access对象。

ADOConn.Execute "INSERT INTO dbo.SFTransfersDB ([ID], [TO])" _
           " SELECT [ID], [TO] FROM OPENDATASOURCE('Microsoft.ACE.OLEDB.12.0', " _
           "'Data Source=""C:\Path\To\Access\Database.accdb""')...SFTransfersDB;" 

答案 2 :(得分:0)

感谢您的建议。

毕竟我说得对。

我使用"设置db = CurrentDb"它完美无缺。