Subject Re: [IBO] Transaction question
Author Geoff Worboys
> I've read the help file and I saw that a physical
> transaction should be kept as short as possible. Then
> I've read that a physical transaction is started when a
> query is prepared. I'm using a query component with
> CommitAction set to caInvalidateCursor. I was using
> IB_Transaction.Commit to end the physical transaction.
> But when I check the started property, it stays True, so
> that means that the physical transaction is not ended.
> So, that can be a problem for application running the
> whole day. Or am I missing something ?

Not having used caInvalidateCursor myself, I had to look it up.
According to the transaction tutorial TI (from the IBO website)...

"caInvalidateCursor - keep all datasets open but invalidate any
cursors that have unfetched rows on the server. After the transaction
ends, the open dataset will establish a new cursor by refreshing. This
is the default action for the TDataset-based components."

To me this indicates that a new transaction will be started in order
to refresh the new cursor. What do you want to happen? What size of
dataset is it (lots of records, only a few)? Try downloading the
transaction TIs from the website, they may help explain what you need.

Also, there is a Status dialog which you can use to monitor OAT in
your application. Take advantage of the automation that IBO does for
you (again read the tutorial info).


Geoff Worboys
Telesis Computing