SQL SERVER数据导出到Access(只用SQL语句实现)(100分)

  • 主题发起人 江西的delphi
  • 开始时间

江西的delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
下面语句在SQL SERVER上的查询分析器中能实现SQL SERVER数据导出到Access
(AccessTableName和SQLTableName表结构完全相同)
insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'd:/a.mdb';'admin';'',AccessTableName)
select * from SQLTableName

在delphi运行报错,提示Microsoft.Jet.OLEDB.4.0要建立linked server,
到底是不是用sp_addlinkedserver、sp_addlinkedsrvlogin建,怎么建,ODBC是不是还要设置数据源,
大侠帮我看一下!

或有别的更好方法用程序实现SQL SERVER数据导出到Access,我用ado,用程序实现
(不用batchmove,或delphi或sql server的工具,可用dts)
 
UPUP。。。。。

赋诗填词。
 
str:='insert into [d:/a.mdb].AccessTableName select * from SQLTableName'
adoconnection1.execute(str)
 
to:ugvanxk
access和access你的方法可能行!
但sql和access不行
 
在delphi里用一条SQL语句做不到吧
 
在DELPHI中设置ADOCONNECTION1连到SQL SERVER上,在ADOQUERY中设置CONNECTION为
ADOCONNECTION1,然后执行

insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'd:/a.mdb';'admin';'',AccessTableName)
select * from SQLTableName

这样就不会报错了,麻烦的是用INSERT INTO的话,必须在ACCESS数据库中设置一个表结构
与SQL SERVER中表结构一样的表。
就我目前所知,一条SQL语句无法达到SQL SERVER数据导出到Access效果。
看那位大富翁有好办法,期待!

OPENROWSET
包含访问 OLE DB 数据源中的远程数据所需的全部连接信息。
当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接
并访问远程数据的一次性的、特殊的方法。可以在查询的 FROM 子句中像引用表名那样
引用 OPENROWSET 函数。依据 OLE DB 提供程序的能力,还可以将 OPENROWSET 函数引
用为 INSERT、UPDATE 或 DELETE 语句的目标表。

 
这个问题我以前也碰到,最后我是在建立一个odbc的别名,连接该access数据库,然后在
sqlserver中 链接服务器,再使用openrowset才正常插入的,这样我在delphi中是一条
sql语句的,

直接使用一条几条SQL语句在sql server的查询分析器中可以正常使用,但是在delphi中
却不能用..

//关注此题.
 
to:smallbs
期待高手!
to:QuickSilver,
你试了吗,我就那么做的,会出现上面我写的错误!(表结构是一样的)
to:hbezwwl,
可不可以仔细点,实在没招,你的方法或许有用,怎么链接服务器?
 
各位大侠:
上午我新建工程,只放adocon,adocom用上面语句,即如下(Accesstablename,qltablename结构同)
with ADOCommand1 do
begin
CommandText:=' insert into OPENROWSET';
CommandText:=CommandText+'(';
CommandText:=CommandText+'''Microsoft.Jet.OLEDB.4.0''';
CommandText:=CommandText+',';
CommandText:=CommandText+'''d:/a.mdb''';
CommandText:=CommandText+';';
CommandText:=CommandText+'''admin''';
CommandText:=CommandText+';';
CommandText:=CommandText+'''''';
CommandText:=CommandText+',';
CommandText:=CommandText+'Accesstablename)';
CommandText:=CommandText+'select * from sqltablename';
showmessage(CommandText);
execute;
end;
能通过,结果正确,由此得到启发,在我所做的系统中,新添控件adocon,adocom专用于执行
上面语句,结果正确,不知道这是正确的还是巧合,还望大侠指点。
 
新的体会:用openrowset,sql-->access不支持事务(adocon连sql)
新的体会:用openrowset,excel-->sql支持事务(adocon连sql)
 
哈哈﹐學了一招﹐老響是哪里的啊?
 
to::hgood
你好!我的待答问题‘江西的大富翁签个到! ’中有。
 
to 江西的delphi:
和我联系一下呀,我记起来啦,你说的这条语句用ADOCONNECTION可以执行的,
但是有一种却是不能的,我一时记不起来,你联系我,我们来讨论一下.
hbezwwl@163.com
qq:53320295,晚上一般在,隐身在,
 
to:hbezwwl
好的!
 
在程序中如何将MS server数据导出为access或FOXPRO数据
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1161770
有很多办法,就是没有ADO的,所以到现在还没解决,麻烦大家也去看看
 
to 江西的delphi:
使用opendatasource可以,你看看sql server中的帮助呀.
我使用存储过程,定义foxpro文件名和路径名为参数,已经
查询成功了,至于你的插入记录也一样.
 
to:hbezwwl
其实问题在 来自:江西的delphi, 时间:2002-8-2 11:28:00, ID:1237712
时已搞定,只是听你说还要注意什么的,所以迟迟还没结束,正确答案在 ID:1237712
谢谢大家的参与,过两天就发分!
 
顶部