设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: 李寻欢
打印 上一主题 下一主题

我的触发器出错了,错在哪?

[复制链接]
11#
 楼主| 发表于 2004-2-16 20:56:00 | 只看该作者
在Access中用语句插入记录也没问题,触发器正常运行
docmd.RunSQL "insert into tbl材料公共信息(材料编号) VALUES('01020002') "

只是在表中直接输入记录会出错。

点击这里给我发消息

12#
发表于 2004-2-16 21:49:00 | 只看该作者
试试ACCESS打补丁看。
记得好像有这种情况,在SQL表中好像直接输数据时会出错,很长时间了,现在忘的差不多了。
13#
 楼主| 发表于 2004-2-17 00:52:00 | 只看该作者
accessxp的补丁哪里有下载?安装后是不是要重新激活?
14#
发表于 2004-2-17 01:39:00 | 只看该作者
我以前也碰到过类似的问题,我找到那些代码,但是只找到自己写的唯一一句注释:

--must insert one by one

我的存储过程是这样的
CREATE TRIGGER newEmp ON dbo.employee
FOR INSERT AS   /*添加新员工的触发器*/
DECLARE @depID int    /*depID: 部门编号*/
SET @depID= (SELECT depID FROM inserted )
SET NOCOUNT ON
IF @depID <>0     /*如果新员工已经被指定了一个部门,那么将该部门默认权限指定给他*/
INSERT INTO empRights  /*empRights: 员工权限表*/
              SELECT @@identity, rID, needCensor, rights, censorDepID, censorEmpID, 0
         FROM depRights WHERE depRights.depID = @depID
SET NOCOUNT OFF
--must insert one by one  (除了这句,所有的注释都是现在加的)

我记得我的问题来自SET @depID= (SELECT depID FROM inserted ),因为同时提交多条记录后,即使对于不同的depID,SET @depID=select...这条语句, 只给出select结果的第一个值。

我看了你写的两个存储过程后, 第一个:

update @ckcl set clh=(select 材料编号 from inserted)
同我上面这个有相似地方。

第二个,用cursor:
for select 仓库编号 from tbl仓库 select @clh=材料编号 from inserted

就不存在上述这个问题了。

我想,问题的根源在于,触发器动作后,无论你一次提交了多少条记录,你在触发器中设置的变量,不要指望它还能按照你的要求根据每条提交的记录改变。

15#
发表于 2004-2-17 01:41:00 | 只看该作者
呵呵,版主聚会帖。
16#
发表于 2004-2-17 06:36:00 | 只看该作者
其他可能的原因,请看
http://www.office-cn.net/bbs/dispbbs.asp?boardID=5&ID=9550
17#
发表于 2004-2-17 16:56:00 | 只看该作者
在打过SP2后,最好的解决方法是用conn.execute(sql)来执行!
不要再去找什么ACCESSXP的补丁啦!好麻烦!
18#
发表于 2004-4-18 21:08:00 | 只看该作者
嘿嘿,我不懂SQL 2000和ADP,但我用过VB+ADO+第三方控件,你的错误的对话框,很可能是因为数据集没有主键造成的。也就是说,表和数据集中一定非要有一个主键不可。插入数据是非要有主键的(这个我也不知道为什么?)

但我用VB+ADO+第三方控件的时间太短了,实在是对这些理解不多。
19#
发表于 2004-4-18 21:10:00 | 只看该作者
而且还有一点,没有主键造成的错误是很奇怪的,有时它能正常工作,但有时它就不能正常工作,最初,我还以为系统出问题了,也是急得要死。
20#
发表于 2004-4-19 21:45:00 | 只看该作者
关于ACCESS2000与SQL2000的兼容问题:因为OFFICE2000发布比SQL2000早,所以存在一些兼容问题。

解决办法是客户机安装SQL客户端实用工具以及OFFICE-SR1
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-15 11:45 , Processed in 0.098736 second(s), 32 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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