Subject Re: [IBO] IBX to IBO porting
Author Patrick Fitzgerald

Thanks for the lengthy reply - it confirmed my fears. The apps in
question are web based (using CgiExpert, another legacy choice) and
therefore do not use any complex aspects of TIBQuery - there are
simply a lot of them!


Great book too by the way - something that the IB/FB community
really needed.

thanks again..


--- In, Helen Borrie <helebor@t...> wrote:
> Patrick,
> At 09:57 AM 9/11/2004 +0000, you wrote:
> >Greetings all,
> >
> >My company has been running IB6.0 since its release and built a
> >suite of apps based around IBX components, using Delphi 5 and 7.
> >
> >At this point I am considering upgrading from IB6.0, possibly to
> >Firebird, however I have heard that it IBX and FB do not mix very
> >well, hence this posting: how hard is it to port from IBX to IBO,
> not exactly straightforward (but worth the effort!)
> >can it be done with a simple search and replace,
> No.
> > or is it more complex than that?
> How I'd approach it is to work item-by-item with the objects in
> datamodule, using the TDataset-compatible components. Don't
> anything; but work through the components, duplicating each IBX
> with its closest TIBO equivalent and setting the equivalent
> Before you begin, open your datamodule as text and copy-paste the
> contents to a text file and save the text file. Then, go back
into form mode.
> Initially, use a TIBODatabase and a TIBOTransaction. However, on
> TIBODatabase, don't duplicate the server params. Instead, use the
> Path, Protocol, Username and Password properties. Set
PasswordStorage to
> psNotSecure and set LoginPrompt false. Hook up the
TIBOTransaction to the
> DefaultTransaction property of the TIBODatabase.
> Use a TIBOQuery to duplicate each dataset component (IBQuery or
> IBDataset), pick up a TIB_DSQL to duplicate an IBSQL. Initially,
> IBStoredProc with TIBStoredProc (though later, you will find
better ways to
> manage stored procedures in IBO). Set just the SQL property to
> with. When you have them all, rubber-band them all. Select as
> IB_Connection property your TIBODatabase and as the IB_Transaction
> your TIBOTransaction.
> If you have any IBClientDatasets, replace them with
> TClientDatasets; however, IBO doesn't need a clientdataset
component to
> get a scrolling dataset so, if that's all you use IBClientDataset
for, you
> won't need to convert them.
> At this point, perform a Save All and then take a backup
> copy) of the pas and dfm files. You will want this to retrieve
> handler code from later.
> Next, go through and delete all of the IBX objects from the
> datamodule. Check the declarations to make sure they have gone.
> handler code should have been deleted as well - some of this you
will want
> to retrieve from the backed up files.
> Next, go into the source of all of the forms and the datamodule
and comment
> out the IBX units in the uses clauses and also dbtables. You may
> dbtables has been added to uses clauses in other places, so it's
best to do
> a search all files for it.
> After that, save all again and then close all.
> When you reopen the project, just click Ignore on the exceptions
and let
> Delphi delete anything it asks to delete.
> The project won't compile at this stage, but do a ctrl-F9 and take
note of
> all the warnings and the fatal error that prevents the compile
> completing. From there, it's just a reiterative process to
retrieve the
> missing pieces from the old source and replace it in the new
version. Just
> keep doing this and attempting a compile each time until the
> eventually completes successfully.
> Something that's important to do in IBO is to ensure that all
> components have KeyLinks. This is a stringlist property that you
> access in the Object Inspector. In there, type one column name
for each
> column that is part of the unique key of the records in the
> (usually the primary key fields on a single-table query).
> Beyond that, follow the Help text and the Delphi help and, of
course, ask
> here!!
> >And if so, has anyone knocked together any tools to help the
> Not that I have heard of.
> Helen