我在開發物流管理系統時,在處理調庫單據時發現數據丟失情況,
例如,a倉庫物資調到b倉庫時,我在a倉庫作單,b倉庫自動產生一帳單據,
我採用一個事務處理。
Database1.StartTransaction;
try
query1.ApplyUpdates; 
query2.ApplyUpdates; 
Database1.Commit; 
except
Database1.Rollback; 
raise;
end;
query1.CommitUpdates; 
query2.CommitUpdates; 
在輸入2000多條單據後,突然發現由一帳單據只有入庫,而對方沒有出庫。
怎麽幫,丟數據是要命的,那位大蝦救救命

解决方案 »

  1.   

    两个表均在同一数据库吧,两个query2是实时连再数据库的话,可能会由于原有数据集已变而无法更新。不过可以这样试试:
    Database1.StartTransaction;
    try
      query1.ApplyUpdates; {这两句最好改为SQL语句为佳}
      query2.ApplyUpdates;
       
      Database1.Commit; 
    except
      on e:Exception do
      begin
        Database1.Rollback; 
      end;
    end;
      

  2.   

    在异常中再加一句显示异常
     ShowMessage(E.message);
      

  3.   

    是不是这2个Query连的不是同一个Database控件啊
      

  4.   

    有什么方法确定query1,query2哪一个没有保存就好办了,
    然后 Database1.Rollback; 
      

  5.   

    这个有关系吗?不过一定要做的话,就用嵌套的Try语句好了