两个mdb数据库表间的记录集插入和更新操作

libingao 2004-08-24 03:53:26
cSql = "INSERT INTO [MS Access;PWD=密码;DATABASE=d:\base.mdb].新表 SELECT * FROM 源表 "
cSql = "SELECT * INTO [MS Access;PWD=密码;DATABASE=d:\base.mdb].新表 FROM 源表 "

以上语句可实现将当前数据库表(.mdb) 中的 源表 内容插入到数据库 d:\base.mdb 中的 新表 中;
我现在有一问题:今有两个数据库:d:\base.mdb 和 d:\base1.mdb,要求根据 d:\base1.mdb 中的表al 的字段 name 内容来更新 d:\base.mdb 中的表a2 的字段 name,两个表通过 ID 字段可建立关联。

我写了一下语句:
Str = "[MS Access;PWD=123;DATABASE=d:\base1.mdb]"
cSql = "UPDATE a2 INNER JOIN " + Str + ".a1 ON " + Str + ".a1.ID = a2.ID SET name = "+ Str + ".a1.name" '当前 ADO 连接的表是 d:\base.mdb
但运行时提示:无效的括号名称 的错误! 

请教各位高手高手高高手,还有什么跟号的办法么?
注意:问题是牵扯到两个数据库表间的操作,并非只是简单的对一个数据库进行操作!
...全文
357 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
libingao 2004-08-28
  • 打赏
  • 举报
回复
怎么没人回答,那我的这 30 分该如何处理,虽然少了点?
ykwang 2004-08-26
  • 打赏
  • 举报
回复
这样好了,笨办法,弄两个ADO链接.
一个读出数据,一个写入数据就可以了
wumylove1234 2004-08-25
  • 打赏
  • 举报
回复
你还想要啥好办法?都已经直接跨库操作!
libingao 2004-08-25
  • 打赏
  • 举报
回复
怎么没人回答,那我的这 30 分给谁?
libingao 2004-08-25
  • 打赏
  • 举报
回复
我是说,除此之外,还有其他方法吗?
那对于 mdb 和 sql server 数据库间的跨库操作,有该如何写 SQL 语句呢?
libingao 2004-08-24
  • 打赏
  • 举报
回复
还有更好的办法吗???
libingao 2004-08-24
  • 打赏
  • 举报
回复
我用
PathName="\\192.168.0.27\d$\Data\base1.mdb"
Str = "[MS Access;PWD=123;DATABASE=" + PathName + "]"

测试通过,不知是不是你的 VB 没打补丁包:SP5 OR SP6 AND Jet40SP8_9xNT.exe 的缘故,
既然我的 "\\192.168.0.27\d$\Data\base1.mdb" 能通过,你的 app.path + "\base1.mdb"原则上也能通过!

我在发帖前,由于那句:
Str = "[MS Access;PWD=123;DATABASE=d:\base1.mdb]"
cSql = "UPDATE a2 INNER JOIN " + Str + ".a1 ON " + Str + ".a1.ID = a2.ID SET name = "+ Str + ".a1.name" '当前 ADO 连接的表是 d:\base.mdb
多处用到了 "[MS Access;PWD=123;DATABASE=d:\base1.mdb]",所以报错,现在好了,我只用到了一次,其他地方我用了 别名 取解决,问题已经顺利解决!
bboos 2004-08-24
  • 打赏
  • 举报
回复
Str = "[MS Access;PWD=123;DATABASE=" & app.path & "\base1.mdb]"
记得以前用app.path 好象就不行了。
libingao 2004-08-24
  • 打赏
  • 举报
回复

of123() ( ) :

我通过 ADO 和 DAO 已经成功执行了 INSERT、UPDATE 和 DELETE 的跨表操作(是跨越两个 mdb 数据库的),以下语句测试通过:

cSql = "UPDATE a2 INNER JOIN [MS Access;PWD=123;DATABASE=d:\base1.mdb].a1 as a3 ON a3.ID = a2.ID SET a2.name =a3.name"

cSql = "UPDATE [MS Access;PWD=123;DATABASE=d:\base.mdb].a2 as a4 INNER JOIN [MS Access;PWD=123;DATABASE=d:\base1.mdb].a1 as a3 ON a3.ID = a4.ID SET a4.name =a3.name"

cSql = "DELETE FROM [MS Access;PWD=123;DATABASE=d:\base.mdb].a2"

of123 2004-08-24
  • 打赏
  • 举报
回复
update 不能跨表操作。
libingao 2004-08-24
  • 打赏
  • 举报
回复
问题好像可以解决:

Str = "[MS Access;PWD=123;DATABASE=d:\base1.mdb]"
cSql = "UPDATE a2 INNER JOIN " + Str + ".a1 as a3 ON a3.ID = a2.ID SET a2.name =a3.name" '当前 ADO 连接的表是 d:\base.mdb

还有更好的办法吗???

1,217

社区成员

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

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