关于openrowset,opendatasource导入局域网客户端Access数据库的问题

跋涉者 2003-10-16 10:03:27
大家好:我现在遇到以下一个问题:

现有一sql服务器,假设其名称为AA,现在需要写一个客户端程序,将客户端的Access数据库批量导入该AA中.这看起来不是一个什么难的问题.最开始我的思路是:
用VB编写,建立两个Adodb.Conn ,一个连接Access,另外一个连接Sql,然后用RecordSet把数据先从Access读出来,然后逐条写到Sql中去,这样导入一个表需要几分钟表时间,但由于该ACCESS数据量过大,且客户有速度上的要求.所以,这个办法被踢开,我开始找其它的办法.
然后考虑用OpenDataSource,OpenDataRow来实现,当时在我的计算机上调试的,程序写好了,运行正常.导入速度也很快.其中用到的导入语句大致如下:
mysql = "INSERT INTO TMP_TB(ca, cb, cc, cd, ce, cf, cg, ch, ci,cq ) (SELECT , cb, cc, cd, ce, cf, cg, ch, ci,cq FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','" & Trim(rsImport!pathname) & "'; 'admin'; ''," & Trim(rsImport("CurrentTableName")) & "))"
' 其中Trim(rsImport!pathname) 和 Trim(rsImport("CurrentTableName")) 分别代表旧表的路径和新表名称
但是这当中有个问题,就是如果所有的Access数据库都放在服务器上,并且在服务器上执行程序,就没有问题.可是,现在要求是要在客户端,比如另外一台计算机BB上,这个时候,Access数据库放在BB上,程序在BB上运行,可是上面的语句在执行的时候却是在服务器上去查找路径,当然查找不到了,服务器端又没有权限访问客户端硬盘上数据的权限,这可怎么办呢?
请大家帮忙,今晚在线等,多谢,讨论有分..............

...全文
119 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
跋涉者 2003-10-17
  • 打赏
  • 举报
回复
自己帮自己再up一下.
yoki 2003-10-17
  • 打赏
  • 举报
回复
mysql = "INSERT INTO TMP_TB(ca, cb, cc, cd, ce, cf, cg, ch, ci,cq ) (SELECT , cb, cc, cd, ce, cf, cg, ch, ci,cq FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','\\共享目录\" & Trim(rsImport!pathname) & "'; 'admin'; ''," & Trim(rsImport("CurrentTableName")) & "))"
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
共享客户端上ACCESS数据文件所在的目录,然后执行这样的语句就行了,即用共享目录:

mysql = "INSERT INTO TMP_TB(ca, cb, cc, cd, ce, cf, cg, ch, ci,cq ) (SELECT , cb, cc, cd, ce, cf, cg, ch, ci,cq FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','\\共享目录\" & Trim(rsImport!pathname) & "'; 'admin'; ''," & Trim(rsImport("CurrentTableName")) & "))"
跋涉者 2003-10-17
  • 打赏
  • 举报
回复
可是,就没有其他方法了吗?克服段的网络状况不太一样,不可能都开共享啊?
zjcxc 2003-10-17
  • 打赏
  • 举报
回复
开户guest用户就不会要求验证啦.
跋涉者 2003-10-17
  • 打赏
  • 举报
回复
win2000的东西,即使完全共享,也需要验证啊.而且在实际调试中,打不开那个.请问有其它方式吗?
跋涉者 2003-10-16
  • 打赏
  • 举报
回复
没人理我,自己帮自已up一下.
跋涉者 2003-10-16
  • 打赏
  • 举报
回复
刚才可能没有描述清楚,太罗嗦了.我在这儿用一句话总结:

就是如可才能用openrowset 或 opendatasource 访问 其它计算机上的Access数据库文件,我知道访问过程SQL或oracle可以.但是能不能访问Access就不知道啦.

或者是在Access中,可不可以执行像 SELECT * INTO e
FROM OPENDATASOURCE ('Microsoft.Jet.OLEDB.4.0',
'Data Source="D:\DATA\db1.mdb";User ID=;Password=' )...c Rowset_1
这样的语句,我在Access 2000中试了,没有成功

抑或是导入大量数据还有其它的办法?请高手不吝赐教,感激不尽.

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧