首页 文章

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

提问于
浏览
0

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

对象变量或未设置块变量

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

你能帮帮我吗?

这是我的代码:

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 回答

  • 1

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

    Dim db As Database
    Dim Discrepancy As Database
    

    所以这

    Set db = Discrepancy
    

    是相同的

    Set db = Nothing
    

    因此,当您尝试使用 db 时,您会收到 db 未设置的错误,而不是 .

  • 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;"
    
  • 0

    谢谢你的建议 .

    毕竟我弄错了 .

    我使用了“Set db = CurrentDb”,它完美无缺 .

相关问题