cov,
I am a newbie also and just learning this stuff by trial and error - so what I say may be wrong (or inefficient) but it works for me:
1. You only need one Transaction (I don't know about other dbms, but sqlite will not allow a transaction within a transaction. So far, i have not found a need for a 2nd Transaction)
2. To access the a second 'select' without losing the first, you not only need a 2nd Query, but also a 2nd Datasource (and prossibly a 2nd DBgrid to display it).
3. Since you need to access columns that you don't want displayed, simply:
DBGrid1.Columns[x].Visible := False;
(where x= column not to be displayed but you still wish to access, x=0 is first column)
Hope this helps