设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 4443|回复: 6
打印 上一主题 下一主题

[与其它组件] docmd.runsql "sql"与conn.Execute "sql"的区别

[复制链接]
跳转到指定楼层
1#
发表于 2003-7-31 01:36:00 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
有区别吗,两者好像都是运行sql语句,为什么docmd.runsql运行后插入的数据总不正确,而必须用conn.Execute才正确-.-''(因为要插入第一条记录后获得这条记录的相关信息并用这些信息插到其它表里去)
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
7#
 楼主| 发表于 2003-8-1 00:04:00 | 只看该作者
因为第一个表的id值是自动编号,然后要把最新的一个自动编号的值写进第二个表里
不涉及循环的话都是正确的,但一有循环用docmd。runsql就出错,我怀疑是因为docmd.runsql做了太快了,但是得不到论证
6#
发表于 2003-7-31 11:20:00 | 只看该作者
我按照你的程序过了好几遍,一点错误都没有

Private Sub Command0_Click()
Dim sql As String
Dim rst As ADODB.Recordset
Dim iId As Integer
Set rst = New ADODB.Recordset
sql = "insert into test1(test1id,test1name) values(1,'aaa')"
DoCmd.RunSQL sql
sql = "select test1id,test1name from test1"
rst.Open sql, CurrentProject.Connection, 2, 4    ///我用的是adp
rst.MoveLast
iId = rst("test1id")
sql = "insert into test2(test2id,test2name) values('" & iId & "','a')"
DoCmd.RunSQL sql
End Sub

不过,就事论事,既然已经有了保存到第一个表中的值,就应该直接把它们用到第二个sql中。何苦再从第一个表中取回来。随便说说,勿怪。
5#
 楼主| 发表于 2003-7-31 08:39:00 | 只看该作者
我贴部分代码吧!,定义部分就不贴了
sql="insert into test1(test1id,test1name) values(1,'aaa')
docmd.runsql sql
sql="select test1id,test1name from test1"
rst.open sql,conn,2,4
rst.movelast
iId=rst("test1id")
sql="insert into test2(test2id,test2name) values('" & iId &"','a')"
docmd.runsql sql

反正代码其它部份完全没动,只是把docmd.runsql sql改为conn.execute sql就正确,不改就会出现数据乱插入
4#
发表于 2003-7-31 07:26:00 | 只看该作者
你的意思是说,你输入一些数据,然后docomd.runsql插入,这一步是对的。然后,

以下是引用lijiawy在2003-7-30 23:11:00的发言:
一到窗体上按这个按钮就不对了。。。


这个时候,程序都做了些什么?
3#
 楼主| 发表于 2003-7-31 07:11:00 | 只看该作者
不可能错的,我是做了一个命令按钮,在用docmd.runsql语句调试(逐语句调试并监测几个重要变量)的时候是插入数据是正确的,但是一到窗体上按这个按钮就不对了。。。而用conn.execute不管是单步调试或者直接按按钮都是正确,所以我搞不懂。。。。郁闷,谁能解释一下
2#
发表于 2003-7-31 07:03:00 | 只看该作者
区别肯定是有的(废话)。不过我不能专业地解释。看上去runsql更像是宏,而后者是直接用ado对象的编程,应该能做更多的事情。恩。
至于为什么你的两种方法结果不一样,那要把你程序贴上来。通常是编程上忘掉了什么,例如,插入一条记录后,获得的却是老的数据。。。我常写一些程序,如果碰到你这样问题,我通常会写一些实验程序,例如设置断点察看变量值,或把取回的纪录显示出来等,看看问题到底出在什么地方。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-29 22:48 , Processed in 0.101231 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表