用代码新增记录出错,请数据库高手HELP,在线等候

2004kingbear 2004-09-09 04:19:28
Dim rsadd As New ADODB.Recordset
With rsadd
.ActiveConnection = cn
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open "select * from asn_zhd"
.AddNew
'需检查内码的完整性
.Fields("单据号码").value = txtdisplay(0).Text
'.Fields("入仓验收单号").value =
.Fields("质化编号").value = txtdisplay(7).Text
.Fields("执行标准").value = IZXBZID
.Fields("产品内码").value = ICPID
.Fields("计量单位内码").value = IUNITID
.Fields("水泥数量").value = txtdisplay(8).Text
.Fields("部门内码").value = IBMID
.Fields("仓库内码").value = ICKID
'.Fields("仓库类别").value = ICKID
'.Fields("发出数量").value = txtdisplay(0).Text
.Fields("抗折强度1").value = txtdisplay(2).Text
.Fields("抗折强度3").value = txtdisplay(5).Text
.Fields("抗压强度1").value = txtdisplay(3).Text
.Fields("抗压强度3").value = txtdisplay(6).Text
.Fields("强度等级").value = txtdisplay(4).Text
.Fields("终止日期").value = DTPicker1(1).value
.Fields("批准人内码").value = loginid
.Fields("录入日期").value = DTPicker1(0).value
.Fields("备注").value = txtdisplay(1).Text
'.Fields("审核标志").value = txtdisplay(0).Text
'.Fields("报告单1号码").value = txtdisplay(0).Text
'.Fields("报告单3号码").value = txtdisplay(0).Text
'更新时触发器执行错误
.Update
.Close


End With

单据编码在数据库中进行了主键唯一索引,并使用了触发器

CREATE TRIGGER ASN_ZHD_INSERT ON dbo.ASN_ZHD
FOR insert
AS
DECLARE @单据号码 char (20) ,
@质化编号 char (10) ,
@执行标准 char (20) ,
@产品内码 int ,
@计量单位内码 int ,
@水泥数量 numeric(18, 2) ,
@部门内码 int ,
@仓库内码 int ,
@发出数量 numeric(10, 4) ,
@终止日期 datetime ,
@关闭状态 char (10) ,
@批准人内码 int ,
@录入日期 datetime ,
@审核标志 char (10) ,
@仓库类别 char (10) ,
@入仓验收单号 char (20)
SELECT @单据号码=单据号码,@质化编号=质化编号,@执行标准=执行标准,@产品内码=产品内码,@计量单位内码=计量单位内码,@水泥数量=水泥数量,@发出数量=发出数量,
@部门内码=部门内码,@仓库内码=仓库内码,@终止日期=终止日期,@关闭状态=关闭状态,@批准人内码=批准人内码,@录入日期=录入日期,@审核标志=审核标志,@仓库类别=仓库类别,@入仓验收单号=入仓验收单号
FROM INSERTED

UPDATE ASN_WH_NUM
SET ASN_WH_NUM.当前值=ASN_WH_NUM.当前值+1
WHERE ASN_WH_NUM.模块代码='asn_zhd'


UPDATE T_STOCK
SET F_102='占用'
WHERE T_STOCK.FITEMID=@仓库内码

--IF RTRIM(LTRIM(@仓库类别))='包装成品' BEGIN
-- UPDATE ASN_RCYSD
-- SET 批准数量=@水泥数量,批准单号=@单据号码,批准日期=GETDATE(),审核标志='已审核'
-- WHERE ASN_RCYSD.单据号码=@入仓验收单号
--END

**********在第二次保留的过程中会提示,单据号码的主键约束不唯一。去掉INSERT触发器就没有什么问题,不知道是游标问题,还是其他,请指教







...全文
124 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
2004kingbear 2004-09-19
是触发器中的字段和表中的不一致引起来的。
回复
cqm2099 2004-09-12
up
回复
gpyrbn 2004-09-10
With rsadd
.ActiveConnection = cn
.CursorLocation = adUseClient
.CursorType = adOpenKeyset
.LockType = adLockOptimistic
.Open "select * from asn_zhd"

尝试把上面的内容更改一下值看看效果,估计和触发器没有什么大的关系!
回复
gpyrbn 2004-09-10
批量更新也不是问题啊 不应该出现这个问题啊

addnew是更新一条记录啊 就是批量插入也做为一个事务只触发一次触发器啊
回复
2004kingbear 2004-09-10
zjcxc(邹建)不是批量新增
回复
chenghua 2004-09-10
我不怎么懂存储过程和触发器
谁能介绍点资料啊
回复
RUKYO 2004-09-10
呵呵~~老大跑过来救场
回复
zjcxc 2004-09-09
呵呵,离VB越来越远了.
回复
Andy__Huang 2004-09-09
to : zjcxc(邹建)
你久不久來這邊一次,在sql server版無論怎樣我都是非常佩服你啊!
回复
zjcxc 2004-09-09
解释一下,你触发器的的代码的作用(主要是与单据号码的联系),或许有利于帮助分析问题所在.
回复
zjcxc 2004-09-09
看你帖出的触发器的代码似乎不会是触发器的问题(当然,你的触发器有潜在的问题,就是如果进行的是批量新增的话,你的触发器处理不了)
回复
2004kingbear 2004-09-09
sql数据库,有什么问题
回复
yijiansong 2004-09-09
触发器有问题,用的啥数据库?
回复
caojinrong 2004-09-09
再顶
回复
lovebeethoven 2004-09-09
帮顶
回复
相关推荐
发帖

1188

社区成员

VB 数据库(包含打印,安装,报表)
申请成为版主
帖子事件
创建了帖子
2004-09-09 04:19
社区公告
暂无公告