Page 1 of 1

UniQuery2->ApplyUpdates() have a Error

Posted: Fri 12 Nov 2010 15:04
by xjhwc10
UniConnection1 connection firebird2.1

UniTransaction1 defaultconnection is UniConnection1
UniTransaction1 isolationlevel is ilReadCommitted
UniTransaction1 readonly is true

UniTransaction2 defaultconnection is UniConnection1
UniTransaction2 isolationlevel is ilReadCommitted
UniTransaction2 readonly is false

UniQuery1 connection is UniConnection1
UniQuery1 cacheupdates is true
UniQuery1 transaction is UniTransaction1
UniQuery1 update transaction is UniTransaction2

UniQuery2 connection is UniConnection1
UniQuery2 cacheupdates is true
UniQuery2 transaction is UniTransaction1
UniQuery2 update transaction is UniTransaction2

my program:
DM->UniTransaction2->StartTransaction();
try
{
、、、、
UniQuery1->ApplyUpdates();
UniQuery2->ApplyUpdates();

UniTransaction2->Commit();
}
catch(EUniError &e)
{
UniQuery1->CancelUpdates();
UniQuery2->CancelUpdates();
UniTransaction2->Rollback();
return;
}

UniQuery1 append a record,and UniQuery2 append a record,while UniQuery2->ApplyUpdates() ,Exception occurred,but UniQuery is save a record,why?

Posted: Tue 16 Nov 2010 15:07
by AndreyZ
Hello,

You can use the TUniConnection.ApplyUpdates method that applies changes from the specified datasets in the following way:

Code: Select all

  TCustomDADataSet* qa[2] = {UniQuery1, UniQuery2};
  UniConnection1->ApplyUpdates(qa, 1);
Using ApplyUpdates for connection is a preferred method of updating datasets rather than calling each individual dataset's ApplyUpdates method. For more information please read UniDAC Reference Manual.