日期:2014-05-19  浏览次数:20510 次

请问如何设计dts使能够导入excel时能动态接受文件名
要在delphi6中开发,想使用dts,因为使用openrowset不能异地导入

------解决方案--------------------
把远程文件名换成网络路径名试试,例如:

当使用远程服务器上的异源数据时,必须使用异源数据的网络路径,即:
\\网络名\共享名\文件名
以EXECL为例:
假设IP地址为192.168.16.166的远程客户端的D盘的test文件夹下有一个EXECL文件Books1.xls,
本机IP地址为192.168.16.2,要读取该远程Books1.xls文件到本机的SQLSERVER中,则可
这样做:
第一步:将192.168.16.166远程客户端的D:\test文件夹设置为共享,共享名为test;
第二步:修改192.168.16.166远程客户端的WINDOWS防火墙设置,在 <例外> 中允许 <文件和打印机共享> ;
第三步:设置网络文件路径:

方法1:右键点击我的电脑-> 映射网络驱动器,假设网络驱动器为Z,映射路径为该远程客户端
的D:\test文件夹,然后这样进行查询:
SELECT * FROM OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source=z:\book1.xls;Extended Properties=Excel 8.0 ')...[Sheet1$]
动态SQL:
declare @sql varchar(1000),@NetPathFile varchar(100)
set @NetPathFile = 'z:\book1.xls '
set @sql =
'SELECT * FROM OPENDATASOURCE( ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data Source= ' + @NetPathFile + ';Extended Properties=Excel 8.0 ' ')...[Sheet1$] '
EXEC(@sql)

方法2:直接使用计算机名或远程计算机的IP:
SELECT * FROM OPENDATASOURCE( 'Microsoft.Jet.OLEDB.4.0 ',
'Data Source=\\192.168.16.166\test\book1.xls;Extended Properties=Excel 8.0 ')...[Sheet1$]
动态SQL:
declare @sql varchar(1000),@NetPathFile varchar(100)
set @NetPathFile = '\\192.168.16.166\test\book1.xls '
set @sql =
'SELECT * FROM OPENDATASOURCE( ' 'Microsoft.Jet.OLEDB.4.0 ' ',
' 'Data Source= ' + @NetPathFile + ';Extended Properties=Excel 8.0 ' ')...[Sheet1$] '
EXEC(@sql)


以上在本机测试通过.测试环境:
简体中文WindowsServer2003sp1 + 简体中文SQLSERVER2000sp4 + 局域网