Subject Strange Transaction behaviour
Hello,
I'm trying to the following scenario to work, but I'm finding that
the second transaction magically causes the first transaction to rollback!

Scenario:
I have 2 queries that are under the control of Transaction A. 1 query
for obtaining a record to be edited (SQL_A) and a second query to
perform a lookup on one of those fields (SQL_B). When the user selects
an option in the lookup list (ie when an OnAfterScroll event is
triggered), I start Transaction B and open a 3rd query (SQL_C) that
locks the selected record in the lookup table, using an " update lookup
set columnA=columnA where columnA=:columnA", parameterized query.

On the first selection, the record is correctly locked and no
Transaction is rolled back. On the second OnAfterScroll event, rolling
back Transaction B causes Transaction A to be rolled back as well.

The code for locking the selected record, which is in the OnAfterScroll
event, looks like this:
sqlLockSs.Close;
sqlLockSs.UnPrepare;
if tranLock.InTransaction then
tranLock.Rollback; // This causes Transaction A to also
rollback...somehow!
if not sqlLockSs.Prepared then
sqlLockSs.Prepare;
sqlLockSs.ParamByName('COLUMNA').AsString :=
IB_Dataset.FieldByName('COLUMNA').AsString;
tranLock.StartTransaction;
sqlLockSs.Open;

Any ideas as to why it's actually happening? I thought having a separate
Transaction would/should not affect the first?

If I'm doing it wrong, then is there a correct way to lock the scrolled
record?

Info: Delphi 5, IBObject 4.3.Aa, Win2k, Firebird 1.5.1

thanks
Mark