这个问题已经上网请教很久了,至今未能解决, 本人愿给250分以求得解答!

hcyzs 2000-01-22 09:53:00
想实现根据gz199912.mdb中gzsj表中字段l1更新gz20001.mdb中gzsj表中字段l1的值,为何下段程序出错,请教该如何修改?
Dim myworkspace As Workspace, mydatabase1 As Database, mydatabase2 As Database, mytable1 As Recordset, mytable2 As Recordset
Private Sub Command1_Click()
d_mybasename1 = App.Path & "\gz199912.mdb"
d_mybasename2 = App.Path & "\gz20001.mdb"
Set myworkspace = DBEngine.Workspaces(0)
Set mydatabase1 = myworkspace.OpenDatabase(d_mybasename1)
Set mydatabase2 = myworkspace.OpenDatabase(d_mybasename2)
Set mytable1 = mydatabase1.OpenRecordset("gzsj", dbOpenDynaset)
Set mytable2 = mydatabase2.OpenRecordset("gzsj", dbOpenDynaset)
mydatabase2.Execute "update gzsj set l1=mytable1.l1 where name=mytable1.name" '运行至此,显示错误:实时错误 '3061',参数不足,期待是2。
mytable1.Close
mytable2.Close
mydatabase1.Close
mydatabase2.Close
End Sub
...全文
258 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tyro 2000-01-24
  • 打赏
  • 举报
回复
看错了,ltp3的方法也是不对的,看来可以参考一下solomon的意见。
Tyro 2000-01-24
  • 打赏
  • 举报
回复
ltp3的方法是对的。
ltp3 2000-01-24
  • 打赏
  • 举报
回复
Dim myworkspace As Workspace, mydatabase1 As Database
Private Sub Command1_Click()
d_mybasename1 = App.Path & "\gz20001.mdb"
Set myworkspace = DBEngine.Workspaces(0)
Set mydatabase1 = myworkspace.OpenDatabase(d_mybasename1)
mydatabase1.Execute "update gzsj set t1.l1=t2.l1 from gzsj as t1 inner jion gzsj in '" & App.Path & "\gz199912.mdb' as t2 where t1.name=t2.name"
mydatabase1.Close
End Sub
试试看。如果还不行,你把数据库和程序Email到ltp3@telekbird.com.cn,我试试看。

snow 2000-01-23
  • 打赏
  • 举报
回复
mydatabase2.Execute "update gzsj set l1=mytable1.l1 where name=mytable1.name" 中gzsj前是否应加上mdb的名称.我的机器坏了,无法试,请试一下.
kxy 2000-01-23
  • 打赏
  • 举报
回复
update gzsj set l1=mytable1.l1 where name=mytable1.name
换成update gzsj set l1=固定值 where name=固定值
看看你的update语句是否正确。
kxy 2000-01-23
  • 打赏
  • 举报
回复
"update gzsj set l1=mytable1.l1 where name=mytable1.name"
你先把 mytable1.name换成一个固定的值试一试,
"update gzsj set l1=mytable1.l1 where name=xxx"
如果可以,再换成一个简单变量试一试,如果还可以的话,
就先把mytable1.name赋给一个中间变量,
Good luck
hcat1999 2000-01-23
  • 打赏
  • 举报
回复
参数不足,你表的字段都写上了吗?
solomon 2000-01-23
  • 打赏
  • 举报
回复
你大概是想花很少的时间,和代码来实现这个功能,
可惜,微软的Jet不提供跨越数据库的更新.
不过,可以用以下代码实现, 多了两行, 不介意吧.


Dim myworkspace As Workspace, mydatabase1 As Database, mydatabase2 As Database, mytable1 As Recordset, mytable2 As Recordset
Private Sub Command1_Click()
d_mybasename1 = "d:\gz199912.mdb"
d_mybasename2 = "d:\gz20001.mdb"
Set myworkspace = DBEngine.Workspaces(0)
Set mydatabase1 = myworkspace.OpenDatabase(d_mybasename1)
Set mydatabase2 = myworkspace.OpenDatabase(d_mybasename2)
Set mytable1 = mydatabase1.OpenRecordset("gzsj", dbOpenDynaset)
Set mytable2 = mydatabase2.OpenRecordset("gzsj", dbOpenDynaset)
'Create a external db view
mydatabase2.CreateQueryDef "v_gzsj", "select * from gzsj in 'd:\gz199912.mdb'"

mydatabase2.Execute "update gzsj, v_gzsj set gzsj.l1=v_gzsj.l1 where gzsj.name=v_gzsj.name"

'Drop the view
mydatabase2.QueryDefs.Delete ("v_gzsj")

mytable1.Close
mytable2.Close
mydatabase1.Close
mydatabase2.Close
End Sub

如果行的话, 给我加点分吧. 祝你的工资系统能卖个好价钱. ;-)
我可是用 14.4 的猫给你发信的. 如果有问题, 论坛上见.

7,759

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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