在我的一个新工程中:
放了一个SQLConnection1, 一个simpleDataSet1 (select * from table1), 一个DateSource1, 一个DBGrid1, 一个button1 (button1.click : SimpleDataSet1.ApplyUpdates(0))问题是:我使用simpleDataSet1取得table1的数据到客户端,如果我把他的PacketRecords的值设置为10, 那幺,当我修改了一笔数据候,然后再使用  SimpleDataSet1.ApplyUpdates(0)把修改的数据提交到数据库的时候,就会包错!!! 
Error: Cannt Create new Connection because in manual or distributed transaction mode。可是如果我把RacketRecords设置为-1 的时候又没有这个问题。可以提交成功!使用TSQLDataSet + TdataSetProvider + TclientDataSet 组合取table1的数据到客户端, 修改一笔数据候,ClientDataSet1.ApplyUpdates(0), 报同样的错误!我试了一下, 我的table1中一共有92笔数据,只要RacketRecords <= 90就会出错,91, 92两个值就不会出错!!! 我换另外一个table试,有169笔数据, 也是
SimpleDataSet1. PacketRecords <= 167就出错,设置168, 169两个值就没有错。他说我激活了手动事务! 我开的是一个新工程,除了一个button1.click下面有一行SimpleDataSet1.ApplyUpdates(0)语句外,再没有其它语句,怎幺可能激活事务,是不是delphi操作PacketRecords的时候自己激活了事务而不得释放?  如果那样的话,PacketRecords拿出来又有多大的用????请高手指点,刚学DBExpress, 非常感谢!!!!

解决方案 »

  1.   

    估计是 simpleDataSet1  中的设置有问题,我太久没用 dbexpress了,具体记不太清
    主要是字段的 key 之类要设置正确还有一个可能,就是你的delphi, dbexpress 的版本太低
      

  2.   

    dbexpress被李维捧的真高,,用起来问题一大堆,,且不说楼主碰到的,,就是那个connection,联接起来也极不稳定。经常联接出错。远不及ADO啊。。
      

  3.   

    同感 dbExpress 有很多问题。事务处理时,居然会出现更新一部分的情况。(也许是我不太会用,但它也太难用了)
      

  4.   

    dbexpress和datasnap有海量的BUG,尤其是分页读取或主子数据集打开的情况,看看版本9的BUG更新列表就知道了.
    可以用V9的DBEXPRESS驱动替换7的,不过用处不大,多数bug在DATASNAP部分.可以去BORLAND的QUALITY CENTER 看看,那么有大量的BUG报告和公司开发人员的解决方案(如果有的话),运气好你能找到类似问题然后手工修改库代码.
      

  5.   

    我帮你测试了一下,用的是delphi 7 + update1,但出现错误时选择继续执行,
    直到程序进入正常状态,然后再执行一次同样的代码,则数据顺利的被更新到
    数据库中。这个问题在delphi 2005中好像更加变本加厉了,不论PacketRecords设置如何,
    只要一执行ApplyUpdates,就会出错。我已经就此提出了一个问题,见
    http://community.csdn.net/Expert/topic/4110/4110782.xml?temp=.8289453
    希望大家一起想想办法。
      

  6.   

    改用dbGO吧,这样就没问题了。