前台:D7或D2005; DBExpress连接组件: TSqlConnection,TSqlQuery ,TDataSetProvider,TClientDataSet;后台:SQL Server 2000;更新数据的命令:DataSetProvider.ApplyUpdates(ClientDataSet.Delta , -1 , ErrorCount); 设置DataSetProvider.ResolvetoDataSet:= True,用以触发BeforeUpdateRecord事件处理函数; 更新数据的命令写在BeforeUpdateRecord事件中。
保存时出错,提示为:
Cannot create new transaction because capacty was exceeded.
问题: 1、更新数据前必须要断开连接后再重新连接,否则就有可能出错。错误的提示意思是不能再开启事务了,其实根本就没有手动开启事务,只有BeforeUpdateRecord自动开启的事务。 2、因为更新每一个ClientDataSet之前都要断开连接,因此更新多个ClientDataSet时无法进行事务处理。找了几个编程论坛都没有找到解决方法,郁闷!
保存时出错,提示为:
Cannot create new transaction because capacty was exceeded.
问题: 1、更新数据前必须要断开连接后再重新连接,否则就有可能出错。错误的提示意思是不能再开启事务了,其实根本就没有手动开启事务,只有BeforeUpdateRecord自动开启的事务。 2、因为更新每一个ClientDataSet之前都要断开连接,因此更新多个ClientDataSet时无法进行事务处理。找了几个编程论坛都没有找到解决方法,郁闷!
SQLConnection1.CloseDataSets;
另外更新一下你的Dbexpress For MSSQL的驱动。就一个dbexpmss.dll文件而已。
相同的意思吧﹖為什么一定要先關閉呢﹖又沒有手動開啟事務﹖而且這樣也同樣會面臨更新不止一個
ClientDataSet 時不好使用事務的問題。 我使用D2005﹐還有比這更新的dbexpress驅動嗎﹖在哪里下載﹖
MSSQL的Bug,你通过SQLMonitor 追踪会发现是事务处了问题,启动一个事务失败了就会出现这样的错误,调用SQLConnection1.CloseDataSets 似乎可以避免,我唯一的一次使用Dbexpress在项目中就被这个错误困扰了很久。当时还有一个问题,就是如果UpdateMode置为upWhereAll或者upWhereChage,一旦出现浮点数也会出现提交失败(record not found or change by ....)错误,应该是小数位的问题。
不知道现在修正没有