Subject Re: [IBO] Firebird and Interbase on the same machine
Author Steve Harp
--- In IBObjects@yahoogroups.com, Helen Borrie <helebor@t...> wrote:
> At 01:49 AM 12/05/2005 +0000, you wrote:
> >Hi All,
> >
> >I've got a new project that requires me to run Firebird 1.5 and
> >Interbase 6.5 servers on the same machine. Now, since installing
> >Interbase, all my existing apps are failing to open saying that my
> >username and password aren't defined. Apparently, they are now using
> >Interbase instead of Firebird and are therefore using the wrong
> >security database. I can still open all of my Firebird databases with
> >IBExpert so I assume there must be a setting in the IBO components
> >that specify which server engine to use.
> >
> >What should I look for?
>
> This isn't exactly simple to do. You should probably start by
studying the
> Firebird 1.5 releasenotes to find out the changes you have to do in
> configuration and in your application's connection strings to make
this work.
>
> In the IBO side there is more than one way to kill the cat. If you are
> using just the default IBO setup then the client library (that
should be)
> loaded for Fb 1.5 is fbclient.dll, renamed to gds32.dll, and moved
to the
> system directory. You can see how your problem happened: your
> installation of IB 6.5 overwrote firebird's client. Later editions of
> IBExpert are OK because you can tell IBE to use fbclient.dll in the
system
> directory. For clients, you have to put it there.
>
> IB 6.5 doesn't know how to run on the same machine as another server
so,
> unfortunately, you are stuck with letting IB have its way and "own" the
> default port (3050) and choosing a different port for Firebird (people
> usually choose 3051, if it's available).
>
> That means that all the mods will have to be applied to your Firebird
> apps. There will two main things:
>
> 1) all your connection strings will have to have the port number in
them
> (which you can't do for IB 6.5). For example,
>
> MyServer:c:\data\mydatabase.fdb
> becomes
> MyServer/3051:c:\data\mydatabase.fdb
>
> 2) You will have to tell IBO where to find the Firebird client
> library. The best option from the POV of portability is to keep the
name
> fbclient.dll and to locate it in the system directory on both server
and
> clients; and either
>
> a) write a new little unit, like this, names IB_FirebirdSession.pas:
>
> {$INCLUDE IB_Directives.inc}
>
> unit
> IB_FirebirdSession;
>
> interface
>
> uses
> IB_Constants;
>
> implementation
>
> initialization
> // Replace the normal value with the alternate client DLL value.
> IB_Constants.IB_GDS32 := 'FBCLIENT.DLL';
>
> end.
>
> Make this unit the first of all in the uses clause of your DPR.
>
> or
>
> b) Alter the declaration of the constant IB_GDS32 in IB_Constants.pas.
>
> The second method is not very nice, if you are using IBO to write
apps for
> both Fb 1.5 and for InterBase or Fb 1.0, because you'll have to
remember to
> change and recompile IB_Constants.pas each time you work on a different
> project.

Thanks for the reply Helen. It sounds like Jason needs to add a few
properties to the TIB_Connection component. My application requires
that I create an order in Firebird and then submit the order to an
Interbase database. In other words, a single application needs to use
both server engines. I think your solution would work but an
enhancement to the component that allowed the user to specify the
client library and port seems like a better solution. Am I right or
have I misunderstood the problem?

Steve