提示:
NO user transaction is currently in progress.
commit transaction请求没有对应的begin transaction
Function DBWriteToDataBase(DataSets:Array of TBDEDataSet):Boolean;
Var
  I : Integer;
begin
  DmDataBase.db.StartTransaction;
  try
    For i := Low(DataSets) to High(DataSets) do
      TBDEDataSet(DataSets[i]).ApplyUpdates;
    DmDataBase.db.Commit;
    Result := True;
  except
    DmDataBase.db.Rollback;
    Result := False;
    MessageHint(0,0);
    Exit;
  end;
  For i := Low(DataSets) to High(DataSets) do
    TBDEDataSet(DataSets[i]).CommitUpdates;  //清除记录更改的缓存
end;
分不够再加

解决方案 »

  1.   

    Function DBWriteToDataBase(DataSets:Array of TBDEDataSet):Boolean;
    Var
      I : Integer;
      b : boolean;
    begin
      DmDataBase.db.StartTransaction;
      try
        For i := Low(DataSets) to High(DataSets) do
          TBDEDataSet(DataSets[i]).ApplyUpdates;
        DmDataBase.db.Commit;
        b := True;
      except
        DmDataBase.db.Rollback;
        b := False;
        MessageHint(0,0);
        Exit;
      end;
      For i := Low(DataSets) to High(DataSets) do
        TBDEDataSet(DataSets[i]).CommitUpdates;  //清除记录更改的缓存
      result := b;
    end;
      

  2.   

    For i := Low(DataSets) to High(DataSets) do
        TBDEDataSet(DataSets[i]).CommitUpdates;  //清除记录更改的缓存
    把这句放在你的try  except之间的result=true的前面试一下。
      

  3.   

    可能有些事务没有提交
    有没有类似if db.inTranction then 的函数放在
    DmDataBase.db.Commit;之前
      

  4.   

    将你的所有的DataSet的CachedUpdates属性射为True试试。