Tipos de campos en Delphi 6
Para hablar con propiedad, esto no es un truco. Es un resumen o referencia de cómo los diversos sistemas de acceso a datos de Delphi 6 tratan a los distintos tipos de columnas que permiten los tres sistemas de bases de datos más extendidos.
Debo confesar que me siento decepcionado, porque el nuevo controlador DB Express
introduce aún más diferencias entre sistemas de bases de datos. Por ejemplo, el nuevo tipo
TFMTBCDField resuelve el problema de la precisión de los valores numéricos con
decimales. Sin embargo, todavía ADO no permite su uso. Así que una aplicación MIDAS
escrita para InterBase puede no ser compatible de forma inmediata con una escrita
para SQL Server. Para colmo, las pruebas iniciales que he hecho con el nuevo tipo de
campo sugieren que hay problemas con su implementación. Es prematuro proclamar un error,
pero voy a seguir con estas pruebas. Por otra parte, no veo razón alguna para el
nuevo TSQLTimeStampField ... excepto que lo hayan inventado para amargar la existencia
de la gente que utiliza IBX, ADO o el BDE en otros proyectos.
No he intentado probar todos los tipos de datos posibles. Por ejemplo, he dejado fuera
todos los tipos "sofisticados" de SQL Server (uniqueidentifier, timestamp, etc),
varios tipos de caracteres nacionales de Oracle y los blobs.
InterBase
Tipo de columna |
DB Express |
IB Express |
BDE |
integer | TIntegerField |
TIntegerField | TIntegerField |
double precision | TFloatField |
TFloatField | TFloatField |
char(1) | TStringField |
TIBString | TStringField |
char(5) | TStringField |
TIBString | TStringField |
varchar(5) | TStringField |
TIBString | TStringField |
numeric(4) | TSmallintField |
TSmallintField | TSmallintField |
numeric(7) | TIntegerField |
TIntegerField | TIntegerField |
numeric(9) | TIntegerField |
TIntegerField | TIntegerField |
numeric(11) | TFMTBCDField |
TLargeintField | TBytesField |
numeric(18) | TFMTBCDField |
TLargeintField | TBytesField |
numeric(5,2) | TBCDField |
TIBBCDField | TIntegerField |
numeric(18,2) | TFMTBCDField |
TIBBCDField | TBytesField |
blob sub_type text | TMemoField |
TMemoField | TMemoFields |
date | TDateField |
TDateField | TDateField |
time | TTimeField |
TTimeField | TTimeField |
timestamp | TSQLDateTimeField |
TDateTimeField | TDateTimeField |
SQL Server
Tipo de columna |
ADO Express |
integer | TIntegerField |
float | TFloatField |
real | TFloatField |
char(1) | TStringField |
char(5) | TStringField |
varchar(5) | TStringField |
numeric(4) | TIntegerField |
numeric(7) | TIntegerField |
numeric(9) | TIntegerField |
numeric(11) | TBCDField |
numeric(18) | TBCDField |
numeric(5,2) | TBCDField |
numeric(18,2) | TBCDField |
tinyint | TWordField |
smallint | TSmallintField |
bit | TBooleanField |
money | TBCDField |
smallmoney | TBCDField |
blob sub_type text | TMemoField |
datetime | TDateTimeField |
smalldatetime | TDateTimeField |
Oracle
Tipo de columna |
DB Express |
ADO Express |
BDE |
number(4) | TBCDField |
TIntegerField | TSmallintField |
number(7) | TBCDField |
TIntegerField | TIntegerField |
number(9) | TBCDField |
TIntegerField | TIntegerField |
number(11) | TBCDField |
TBCDField | TBCDField |
number(18) | TFMTBCDField |
TBCDField | TBCDField |
number(5,2) | TBCDField |
TBCDField | TBCDField |
number(18,2) | TFMTBCDField |
TBCDField | TBCDField |
char(1) | TStringField |
TStringField | TStringField |
char(5) | TStringField |
TStringField | TStringField |
varchar(5) | TStringField |
TStringField | TStringField |
clob | TMemoField |
TMemoField | TMemoField |
date | TSQLTimeStampField |
TDateTimeField | TDateTimeField |
(para el BDE: ENABLE BCD=TRUE, ENABLE INTEGERS=TRUE.
El controlador OLE DB utilizado es el propio de Oracle)
|