Sql server VBA-对外部SQL Server的MS访问
VBA中尝试将数据从外部SQL Server DB导入本地MS Access DB的此指令有问题:Sql server VBA-对外部SQL Server的MS访问,sql-server,vba,ms-access,Sql Server,Vba,Ms Access,VBA中尝试将数据从外部SQL Server DB导入本地MS Access DB的此指令有问题: Conectar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\VENTAS\VENTAS.mdb;" _ & "Persist Security Info=False;" cn.ConnectionString = Conectar cn.Open SQL= "insert into PRO (
Conectar = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\VENTAS\VENTAS.mdb;" _
& "Persist Security Info=False;"
cn.ConnectionString = Conectar
cn.Open
SQL= "insert into PRO (COD_PRO,DESC_PRO) " & _
"select COD_ARTICU,DESCRIPCIO " & _
"FROM OPENDATASOURCE ('SQLNCLI', 'Data Source=VAIO\SQLEXPRESS;User" & _
"ID=XXX;Password=XXX;').ACPE.dbo.STA11 where perfil<>'N';"
cn.Execute Sql
Conectar=“Provider=Microsoft.ACE.OLEDB.12.0;数据源=C:\VENTAS\VENTAS.mdb;”_
&“持久化安全信息=False;”
cn.ConnectionString=Conectar
中国公开赛
SQL=“插入到专业版(COD\u PRO,DESC\u PRO)”和_
“选择商品,描述”和_
“来自OPENDATASOURCE('SQLNCLI','Data Source=VAIO\SQLEXPRESS;User”&\u
“ID=XXX;Password=XXX;”).ACPE.dbo.STA11其中perfil'N'
执行Sql
错误
“FROM类别中的语法错误”
似乎我无法从Access使用
OPENDATASOURCE
到SQL Server?OPENDATASOURCE是t-SQL语句,并且是从SQL Server内部使用的,而不是从Access使用的,因此您会遇到此错误
要从位于sql server中的PRO表插入数据,您可以:
在VENTAS.mdb中创建链接到Sql server表“PRO”的表
或
在VENTAS.mdb中创建对Sql Server Pro表的直通查询。您需要反转查询引用
OPENDATASOURCE
是SQL Server TSQL命令,而不是MS Access SQL命令。考虑运行存储查询的ODBC内联:
SQL(另存为存储查询或脚本为VBA字符串)
插入专业版(COD\u PRO,DESC\u PRO)
选择商品,描述商品
来自[ODBC;DRIVER={SQL Server};Server=VAIO\SQLEXPRESS;database=ACPE;UID=XX;PWD=XXXX].STA11;
VBA
DoCmd.OpenQuery "queryName"
' OR CurrentDb.Execute strSQL
或者,创建链接表,然后运行追加查询,因为链接表可以与本地表交互:
DoCmd.TransferDatabase acLink, "ODBC Database", _
"ODBC;DRIVER={SQL Server};server=VAIO\SQLEXPRESS;database=ACPE;UID=XX;PWD=XXXX;", _
acTable, "STA11", "STA11"
strSQL = "INSERT INTO PRO (COD_PRO, DESC_PRO)
SELECT COD_ARTICU, DESCRIPCIO
FROM STA11;"
CurrentDb.Execute strSQL
传递查询能否识别本地Access数据库中的表?@Zev,是的,传递查询可以访问任何ODBC连接,包括ODBC到Access数据库。在OP中,您在VENTAS.mdb中创建到SQL server的直通查询。直通查询在查询远程SQL server中的表时,是否会同时识别本地Access数据库中的表?@zev,请查看:,以获取到SQL server的直通查询。@ZevSpitz-No,传递查询仅在连接范围内运行,无法查看调用它的本地数据库。您可以从它生成表:
SELECT*到[passthruQ]的[localtable]