Subject Coping with clients loving BDE/Desktop style applications
Author Richard Holland
Hi, as I've posted before I'm converting a 100,000+ line BDE app in D4
to FB 1.5+IBO4 in D7 Enterprise.

I'm happy to report the entire thing runs with itself, an ini file
pointing to a host running fb, and fbclient.dll! I'm BDE free for the
first time in 11 years.

Unfortunately, our application was written strictly for ease of use on
our client's part - not ours. Meaning this thing is basically mimicking
a spread sheet like most BDE applications, and my clients demand this feel.

One of our main forms opens nearly 30 datasets (at this point 80% are
IBOQuery, 5% IBOTable, 15% IB_Query/Cursor/D_SQL) across 10 tabsheets in
a pagecontrol. Before the conversion it was 50! I plan to trim this
down to a "need to know" basis.

Questions:
1) We used to have 1 datamodule that everything shared, often our main
"order" dataset was reconfigured on the fly with filters and used across
hundreds of reports. This upset me so I'm working fast to break into 5
datamodules each containing a ilconcurrency trans for reports/updating
statements and ilcomitted trans for browsing. I'm hoping this is the
right direction?

2) I had thought checking a dataset's transction for TransactionIsActive
would tell me pending updates/inserts where there to commit/rollback -
I'm getting this true on selectquery.open, so I'm guessing I'm wrong and
this property is true if a logical transaction, started by either me or
automatically, is active which could be caused by select statement dml?
If so I'm finding it hard to detect uncomitted transaction changes and
asking the user for input. I've noticed I can't get TimeOutProps to
prompt, and I'm assuming my transaction is for some reason entirely my
fault not ever going idle.

3) What I want is a constant flow of:
-StartTransaction either explicit or via IBO
-commit or rollback as necessary
-be sure the OAT advances alright

Especially if a lot of browsing is going on with a commit action of
anything other than close, right?

4) Any thoughts keeping the pagecontrol and treating each tabsheet as a
"form" dataset wise? Seems like if I open/close on pagecontrol change I
could check transactions here and act accordlingly. I'm inclined to
ditch the pagecontrol/tabs for mdi forms (our users won't tolerate SDI,
which I prefer). Our users get lost FAST though.

I obviously have a huge fear of not only using transactions WRONG, but
not taking advantage of this.



--
Richard Holland