大家不知遇到这样的问题吗?请看如下代码:(是保存按钮的代码)
with MastData do
begin
ADOCONN.BeginTrans;
try
Stock.UpdateBatch;
StockWare.UpdateBatch;
ADOCONN.CommitTrans;
except
ADOCONN.RollbackTrans;
raise;
end;
end;
如果在录入数据时(用数据控件),没违反自定义的数据库规则(在Accsee2000的
数据库中直接定义,而没有在程序中控制,如某个字段不能为空),那么主从表
的所有记录都能保存,而如果违反了规则就出现问题:(违反规则后,我已经重新
修改违反规则的数据,使刚才违反规则的数据不再违反规则)
如果原先违反规则的是主表,则从表数据不能被保存(因为主表违反规则,
要使主表不再违反规则,则主表的记录必须修改,而从表的数据因没违反,
就不再修改),主表能保存;原先违反规则的是从表,则主表的数据不能被保存,
从表能保存。
这就是说,当违反了规则,数据回滚(RollbackTrans)后,必须对主从表的数据
都进行修改(如果从表违反,必须在从表中添加一条新纪录,也能使主表数据不必
修改就能保存),才能保证主从表的数据都能被保存,哪怕是主或从表中只有一个
违反规则,也必须两个都修改,可以是随便选择一个字段重新填写一个和原先相同
的值即可,真是蠢)。
说明一下,用Stock.Edit或StockWare.Edit没用,一定要在数据控件中修改数据。