我的连接是用SQLConnect + SQLDataSet + DataSetProvider + ClientDataSet 这样的方式来读取和保存数据的,我在"保存"时做了两个动作,分别修改两张表中的数据然后提交(原代码如下:)
Cds_Pcb_Contact.FieldByName('con_ID').AsString := 'SE'+ order_tno;
Cds_Pcb_Contact.Post; Cds_Pcb_Adjunct.Edit;
Cds_Pcb_Adjunct.FieldByName('matter').AsString := order_tno;
Cds_Pcb_Adjunct.Post; if not DM_Data.DM_Data_module.SQL_CB_Reckoning.InTransaction then
begin
aTD.TransactionID := 1;
aTD.IsolationLevel := xilREADCOMMITTED;
DM_Data.DM_Data_module.SQL_CB_Reckoning.StartTransaction(aTD); try
Cds_Pcb_Contact.ApplyUpdates(0);
Cds_Pcb_Adjunct.ApplyUpdates(0);
DM_Data.DM_Data_module.SQL_CB_Reckoning.Commit(aTD) ;
except
on e : Exception do
begin
DM_Data.DM_Data_module.SQL_CB_Reckoning.Rollback(aTD) ;
Cds_Pcb_Contact.CancelUpdates;
Cds_Pcb_Adjunct.CancelUpdates;
end;
end;
end;
现在当我执行DM_Data.DM_Data_module.SQL_CB_Reckoning.StartTransaction(aTD);这一句时遇到一个错误,提示如下
Project CB_Reckoning.exe raised exception calss EDatabaseError with message '', Process stopped. Use Step or Run to continue我想请问一下到底是什么原因呢,我上面这段代码是按一本书下"拿"下来的, 本人比较菜,请各位帮帮忙
Cds_Pcb_Contact.FieldByName('con_ID').AsString := 'SE'+ order_tno;
Cds_Pcb_Contact.Post; Cds_Pcb_Adjunct.Edit;
Cds_Pcb_Adjunct.FieldByName('matter').AsString := order_tno;
Cds_Pcb_Adjunct.Post; if not DM_Data.DM_Data_module.SQL_CB_Reckoning.InTransaction then
begin
aTD.TransactionID := 1;
aTD.IsolationLevel := xilREADCOMMITTED;
DM_Data.DM_Data_module.SQL_CB_Reckoning.StartTransaction(aTD); try
Cds_Pcb_Contact.ApplyUpdates(0);
Cds_Pcb_Adjunct.ApplyUpdates(0);
DM_Data.DM_Data_module.SQL_CB_Reckoning.Commit(aTD) ;
except
on e : Exception do
begin
DM_Data.DM_Data_module.SQL_CB_Reckoning.Rollback(aTD) ;
Cds_Pcb_Contact.CancelUpdates;
Cds_Pcb_Adjunct.CancelUpdates;
end;
end;
end;
现在当我执行DM_Data.DM_Data_module.SQL_CB_Reckoning.StartTransaction(aTD);这一句时遇到一个错误,提示如下
Project CB_Reckoning.exe raised exception calss EDatabaseError with message '', Process stopped. Use Step or Run to continue我想请问一下到底是什么原因呢,我上面这段代码是按一本书下"拿"下来的, 本人比较菜,请各位帮帮忙
解决方案 »
- fastreport 没有 printgrid ,怎么打印 dbgrid 的当前行?
- windows media player怎么创建一个播放列表,且能自动播放下一首
- 有谁用过FlyTreeViewPro这个控件啊,怎么用啊
- 用ActiveX实现远程操作和数据传输
- 傻傻的问一个问题!!自己搞不出来了(选中的LISTITEM焦点移到下一条)
- 数据库的树结构--转换树控件的问题
- 有一个MEMO,按下回车就......
- 如何取得日期所在的季度?
- 外部程序如何调用AS3
- delphi的winsock.pas中定义了sockaddr_in,如何读其中的ip地址和断口号?它的声明内附
- 为什么每次执行程序关闭窗口后程序还没有释放掉
- Delphi运行问题请教
之前调用SQLConnection.CloseDataSets
试试,不知道能不能解决你的问题
PROCEDURE TFRMMAIN.SAVETODATABASE(AA:TQuery) ; // 數據保存提交過程
BEGIN
frmmain.DBCOMMON.StartTransaction;
TRY
AA.ApplyUpdates;
FRMMAIN.DBCOMMON.Commit;
EXCEPT
FRMMAIN.DBCOMMON.Rollback;
RAISE;
END;
AA.CommitUpdates;
END;