Página principal
Artículos y trucos
Catálogo de productos
Ejemplos y descargas
Mis libros
Cursos de formación
Investigación y desarrollo
Libros recomendados
Mis páginas favoritas
Acerca del autor
 
En colaboración con Amazon
 
Intuitive Sight

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
integerTIntegerField TIntegerFieldTIntegerField
double precisionTFloatField TFloatFieldTFloatField
char(1)TStringField TIBStringTStringField
char(5)TStringField TIBStringTStringField
varchar(5)TStringField TIBStringTStringField
numeric(4)TSmallintField TSmallintFieldTSmallintField
numeric(7)TIntegerField TIntegerFieldTIntegerField
numeric(9)TIntegerField TIntegerFieldTIntegerField
numeric(11)TFMTBCDField TLargeintFieldTBytesField
numeric(18)TFMTBCDField TLargeintFieldTBytesField
numeric(5,2)TBCDField TIBBCDFieldTIntegerField
numeric(18,2)TFMTBCDField TIBBCDFieldTBytesField
blob sub_type textTMemoField TMemoFieldTMemoFields
dateTDateField TDateFieldTDateField
timeTTimeField TTimeFieldTTimeField
timestampTSQLDateTimeField TDateTimeFieldTDateTimeField

SQL Server

Tipo de columna ADO Express
integerTIntegerField
floatTFloatField
realTFloatField
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
tinyintTWordField
smallintTSmallintField
bitTBooleanField
moneyTBCDField
smallmoneyTBCDField
blob sub_type textTMemoField
datetimeTDateTimeField
smalldatetimeTDateTimeField

Oracle

Tipo de columna DB Express ADO Express BDE
number(4)TBCDField TIntegerFieldTSmallintField
number(7)TBCDField TIntegerFieldTIntegerField
number(9)TBCDField TIntegerFieldTIntegerField
number(11)TBCDField TBCDFieldTBCDField
number(18)TFMTBCDField TBCDFieldTBCDField
number(5,2)TBCDField TBCDFieldTBCDField
number(18,2)TFMTBCDField TBCDFieldTBCDField
char(1)TStringField TStringFieldTStringField
char(5)TStringField TStringFieldTStringField
varchar(5)TStringField TStringFieldTStringField
clobTMemoField TMemoFieldTMemoField
dateTSQLTimeStampField TDateTimeFieldTDateTimeField
(para el BDE: ENABLE BCD=TRUE, ENABLE INTEGERS=TRUE. El controlador OLE DB utilizado es el propio de Oracle)