又一个事物处理(5分)

  • 主题发起人 主题发起人 Teikini
  • 开始时间 开始时间
T

Teikini

Unregistered / Unconfirmed
GUEST, unregistred user!
分少, 原谅.

原码:(DB:ORACLE)
with dmlZaiko do
begin
tblM40_Shohin.SetKey;
tblM40_Shohin.FieldByName('M40_SHOHIN_CD').AsString := '101';
if tblM40_Shohin.GotoKey then
begin
tblM40_Shohin.Edit;
tblM40_Shohin['M40_MIN_STOCK'] := 5000;
tblM40_Shohin.Post;
end;
end;

问题:
这种更新能用COMMIT和ROLLBACK吗 ?
如能:怎么作,请给我加几句.

(不要告诉我用SQL,SQL当然可以)



 
with dmlZaiko dobegin tblM40_Shohin.SetKey;
tblM40_Shohin.FieldByName('M40_SHOHIN_CD').AsString := '101';
if tblM40_Shohin.GotoKey then
begin
try
tblM40_Shohin.database.StartTransaction;
tblM40_Shohin.Edit;
tblM40_Shohin['M40_MIN_STOCK'] := 5000;
tblM40_Shohin.Post;
tblM40_Shohin.database.commit;
except
tblM40_Shohin.database.rollback;
end;
end;
end;
 
to SeaSky:
可是, 按你的做法, 那个表居然没有更新.
如果在那个rollback后面再加一句 Raise; 则显示出错,说: 这个功能不能使用!

why?


 
什么? 你单步跟踪一下, 是那一句产生了错误?
 
不过建议你用 CachedUpdate
 
to SeaSky:
出错在Post. why?

CachedUpdate怎么用, How?

多谢.....
 
你看一下Delphi 的Demo : Db/cachedUp 你瞧一下吧, 比较简单。
 
接受答案了.
 
后退
顶部