Subject Re: [firebird-support] Delphi 5 + BDE
Author Helen Borrie
At 06:21 PM 18/03/2004 +0200, you wrote:
>Seems to work, but TTable seems to be problem. It opens,
>but short usage of it causes EAccessVialation in SQLINT32.DLL(interbase
>library)
>is there knowledge about update for this? How I should work with BDE,

The SQL driver with Delphi 5 is for Interbase 5.1 (ODS 9). It will support
a legacy InterBase database (IB 5.6 or lower) as a Dialect 1 database; it
doesn't support Firebird. Borland distributed BDE 5.2 with Delphi 6, which
still doesn't fully support Dialect 3 (Firebird's native dialect). Borland
stopped providing BDE support for client/server databases officially at BDE
5.2. IOW, even the 5.2 InterBase driver will never be bug-fixed to handle
the Dialect 3 data types properly.

>Shortly other stuff about 1.5
>BDE NATIVE Interbase VERSION 4.0 works with intensive TQuery usage
>
>MSSQL --- Firebird datatypes
>float (8bytes) = double precision
>datetime (8bytes) = timestamp - "equivalent", not equal
>int IDENTITY (1, 1)= ??? what is this in Firebird (automatic
>identity for the record)

Firebird doesn't have this type. Use a generator and a Before Insert
trigger to establish an auto-incrementing key. You can use a single
generator for all, or an individual generator per key - your choice.

CREATE GENERATOR MyGen;

For each table:

create trigger Gen_MyTable_ID for MyTable
active Before Insert
as
begin
if (new.ID is null) then
new.ID = Gen_ID(MyGen, 1);
end


>SQL functions is there equivalents to these MSSQL stuff
>@@spid, -- Current process id ->

Superserver doesn't have process ids; Classic does, but they are not
available from the engine. You can get current_transaction and
current_connection as context variables (32-bit integer).

>getdate(), -- Current time in the server ->

CURRENT_TIMESTAMP, CURRENT_DATE, CURRENT_TIME

>suser_name(), -- Current username ->

CURRENT_USER, USER

>host_name(), -- Current hostname of the client ->

Not available. Conversations between client and server are strictly
client-driven. The server talks to client instances, not machines.
The context is connection + transaction.


>excample:
>DELETE FROM APU WHERE TASK=@@spid ;
>select @@spid,getdate(),suser_name(),host_name() from apu where a=1;
>
>
>Any good FAQ document?

When you're shifting from MSSQL, "FAQ" doesn't really cover it.
Search www.ibphoenix.com ("website search") for "MSSQL". There are
migration wizards available, some with documentation.

/heLen