我试图将我的访问表数据传输到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"
答案 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"它完美无缺。