【发布时间】:2020-01-15 08:11:09
【问题描述】:
我的任务是将excel表中的新记录添加到Microsoft SQL Server表中,为此,我计划使用ADODB对象;但是,我的 SQL 语句没有执行,我认为这与我的连接字符串有关。
在我的代码中,我写下了我最终打算使用的 SQL 语句,但是当我尝试时:
sql = "SELECT * FROM [Provider=SQLOLEDB;Data Source=hpwfh-ssql01; _
Initial Catalog=HPW DataIntegrated Security=SSPI;Trusted_Connection=Yes].Hubspot_Data"
(一个简单的选择语句)它甚至不起作用。
Sub update1()
Dim cn, rs As Object, path As String, name As String, sql As String, file As String
path = "T:\Marketing\Data Analytics\Hubspot data for SQL"
name = "Hubspot_Data"
file = path & "\" & name & ".xlsx"
Set cn = CreateObject("ADODB.Connection")
With cn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.connectionstring = "Data Source=" & file & ";Extended Properties=""Excel 12.0 Xml;HDR=YES;Readonly=false;IMEX=0"";"
.Open
End With
sql = "INSERT INTO [Provider=SQLOLEDB;Data Source=hpwfh-ssql01;Initial Catalog=Hubspot_Data;Integrated Security=SSPI;Trusted_Connection=Yes].Hubspot_Data " & _
"SELECT * FROM (SELECT * FROM [Provider=SQLOLEDB;Data Source=hpwfh-ssql01;Initial Catalog=Hubspot_Data;Integrated Security=SSPI;Trusted_Connection=Yes].Hubspot_Data" & _
"EXCEPT SELECT * FROM [hubspot-crm-exports-sql-data-20$])"
Set rs = cn.Execute(sql)
End Sub
附注:表与数据库命名相同
对于这段代码,我得到了三个不同的错误:
Microsoft Access 数据库引擎无法找到对象“区域” 确保对象存在并且您拼写了它的名称和路径名 正确。 (而且我没有拼错 Hubspot_Data)
外部表不是预期的格式。
Microsoft Acess 数据库引擎无法打开或写入文件 (我的文件路径)'\My Documents\Provider=SQLOLEDB.XLSX'。它已经打开了 仅供其他用途,或者您需要获得许可才能查看和编写其 数据。
很明显,计算机去错误的地方检索它需要的表,我不知道我哪里出错了。感谢您的帮助。
【问题讨论】:
-
我认为您对它的工作原理感到困惑。您对连接执行查询。您不从连接中进行选择。您使用连接字符串创建连接对象。然后你需要打开连接。最后执行一个标准查询,连接字符串不是查询的一部分。我建议您找到一些有关使用 VBA 进行查询的基本教程。
标签: sql-server excel vba ssms adodb