G
garydudu
Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾帮忙了,本人遇到这样一个怪异的问题:dbgrid中两条一模一样的纪录指向同一条
数据库纪录。事情是这样的,控件不多,一个tdatabase,ttable,tdatasource,tdbgrid,
tupdatesql,tbutton,将ttable的cachedupdates属性设为true,ttable的updateobject
指向tupdatesql控件,tupdatesql控件的语句为
modify语句:
update 我的订单主表
set
订单号 = :订单号,
结帐否 = :结帐否,
供应商 = :供应商,
总金额 = :总金额,
日期 = :日期
where
订单号 = :OLD_订单号
insert语句:
insert into 我的订单主表
(订单号, 结帐否, 供应商, 总金额, 日期)
values
订单号, :结帐否, :供应商, :总金额, :日期)
delete语句:
delete from 我的订单主表
where
订单号 = :OLD_订单号
以上订单号为主键。
button控键的事件:
database1.StartTransaction ;
try
table1.ApplyUpdates;
database1.Commit;
table1.CommitUpdates;
except
database1.Rollback;
end;
就是这些,问题出现在,当我在tdbgrid中新增一条纪录,并输入几个字段之后,如果
光标不离开当前行(一定是不离开当前行)时,直接按下button按钮,就会出现两条
一模一样的纪录在dbgrid中,其中一条是tupdatesql控件写入数据库的(我能确认
是tupdatesql写入的),另外一条既不在数据库中也不在缓存中,但是他们同时
指向数据库的同一条纪录,如果此时修改,就会出现更加怪异的现象,需要说明的
是我没有设定ttable空间的onupdaterecord事件,当然如果不用tupdatesql控键不会
出现以上现象。我的环境是:sql200+delphi6.0,都打了补丁,我想这个问题比较普遍,
特别对只读表的修改,只能用到tupdatesql来进行,所以请大虾帮忙,大伙都受益。
数据库纪录。事情是这样的,控件不多,一个tdatabase,ttable,tdatasource,tdbgrid,
tupdatesql,tbutton,将ttable的cachedupdates属性设为true,ttable的updateobject
指向tupdatesql控件,tupdatesql控件的语句为
modify语句:
update 我的订单主表
set
订单号 = :订单号,
结帐否 = :结帐否,
供应商 = :供应商,
总金额 = :总金额,
日期 = :日期
where
订单号 = :OLD_订单号
insert语句:
insert into 我的订单主表
(订单号, 结帐否, 供应商, 总金额, 日期)
values
订单号, :结帐否, :供应商, :总金额, :日期)
delete语句:
delete from 我的订单主表
where
订单号 = :OLD_订单号
以上订单号为主键。
button控键的事件:
database1.StartTransaction ;
try
table1.ApplyUpdates;
database1.Commit;
table1.CommitUpdates;
except
database1.Rollback;
end;
就是这些,问题出现在,当我在tdbgrid中新增一条纪录,并输入几个字段之后,如果
光标不离开当前行(一定是不离开当前行)时,直接按下button按钮,就会出现两条
一模一样的纪录在dbgrid中,其中一条是tupdatesql控件写入数据库的(我能确认
是tupdatesql写入的),另外一条既不在数据库中也不在缓存中,但是他们同时
指向数据库的同一条纪录,如果此时修改,就会出现更加怪异的现象,需要说明的
是我没有设定ttable空间的onupdaterecord事件,当然如果不用tupdatesql控键不会
出现以上现象。我的环境是:sql200+delphi6.0,都打了补丁,我想这个问题比较普遍,
特别对只读表的修改,只能用到tupdatesql来进行,所以请大虾帮忙,大伙都受益。