|Subject||Re: [IBO] Transaction question|
> I've read the help file and I saw that a physicalNot having used caInvalidateCursor myself, I had to look it up.
> 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 ?
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).