Subject Re: [IBO] Problem with TIBOTable + TIBOQuery
Author Helen Borrie (TeamIBO)
At 09:00 AM 07-02-02 +0100, Max wrote:
>Hello,
> We have converted all our applications from BDE to IBO.
>Now we use IBO ver. 4.0 Fn.
>After intial problems, now we are very happy for this because our apps are more stable.
>Now in a project we've a strange problem .
>We use TIBODatabase with standard configuration + TIBOTable + TIBOQuery
>(were standard stand for take from Delphi palette and fit on datasource).
>I make
>
>IBODatabase.StartTransaction;
>IBOTable.Edit;
>modify a value
>IBOTable.Post;
>IBODatabase.Commit;
>
>after
>IBODatabase.StartTransaction;
>IBOQuery.ExecSQL; (* on all record of table *)
>IBODatabase.Commit;
>
>And I've error deadlock on no wait transaction ...
>
>If I exec query on all record with the exclusion of the record were I make
>chage all ok.

You only showed us pseudocode, I know; but are you handling exceptions? Are you testing the TransactionIsActive property at all before attempting to start it?

If Post failed then commit would fail and your first transaction would still be pending when you came to execute the second statement. The second call to StartTransaction should then throw an exception if the first one remains uncommitted.

It therefore seems possible that it is the FIRST Post or Commit that is returning the deadlock, when it attempts to post changes to a record that is already locked by a different transaction.

Are you watching a SQL monitor to see what is happening at the interface? It should tell you which statement is the one encountering the deadlock...

regards,
Helen Borrie (TeamIBO Support)

** Please don't email your support questions privately **
Ask on the list and everyone benefits
Don't forget the IB Objects online FAQ - link from any page at www.ibobjects.com