Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server VBA-对外部SQL Server的MS访问_Sql Server_Vba_Ms Access - Fatal编程技术网

Sql server VBA-对外部SQL Server的MS访问

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 (

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 (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]