Ver la Versión Completa : Obtener tipos de datos de campos en una BD.
daynel
14-04-2005, 08:04:13
Yo me conecto a la base de datos con el ADOConnection, y obtengo la informacion de cuantas tablas y campos tiene cada tabla, pero me hace falta saber el tipo de cada uno de los campos para despues poder realizar varias operaciones sobre ellos en dependencia del tipo.
Neftali [Germán.Estévez]
14-04-2005, 09:59:14
Abre tu Base de Datos de SQL Server y échale un vistazo a las tablas: sysobjects, syscolumns y sysTypes.
La primera te devolverá La lista de todos los objetos de la Base de Datos, entre ellos las tablas.
Ejecuta la consulta, por ejemplo:
SELECT * FROM sysobjects WHERE (name = 'Moneda')
Eso te devolverá un registro que reperesenta la información de la tabla Moneda (por poner una). En ese registro hay un id (recuerdalo); Supongamos para el ejemplo que es el 9876.
Ahora utilizando la tabla syscolumns puedes obtener todos las columnas de todas las tablas; Para saber las de la tabla Moneda utiliza el id.
SELECT * FROM syscolumns WHERE (id = 9876)
Ésta consulta te devolverá todas las columnas de la tabla Moneda. Ahora nos fijamos en una columna llamada xType. Esa columna indica el tipo del dato y para saber cual es ytiliza la tabla SysTypes.
Si ejecutas la consulta
SELECT * FROM systypes
Obtendrás los tipos correspondientes a los valores de la columna xtype de antes.
Finalmente puedes obtener todo la info. con una sóla consulta como ésta:
SELECT syscolumns.name AS COL_NAME, systypes.name AS TYPE_NAME, *
FROM syscolumns INNER JOIN
sysobjects ON syscolumns.id = sysobjects.id INNER JOIN
systypes ON systypes.xtype = syscolumns.xtype
WHERE (sysobjects.name = 'Moneda') AND (systypes.name <> 'sysname')
Te devolverá todos los campos y sus tipos (a parte del resto de información de cada columna) para la tabla llamada Moneda.
LucianoRey
15-04-2005, 23:31:07
Hola, como dices que usas AdoConnection, espero te pueda servir esto:
una vez que tengo en AdoDataSet1 asignada la tabla de la que quiero información
for Contador:=0 to ADODataSet1.FieldCount - 1 do
begin
ADODataSet1.Fields.Fields[Contador].DisplayName; //nombre
ADODataSet1.Fields.Fields[Contador].Size; //tamaño
ADODataSet1.Fields.Fields[Contador].DataType; //tipo
end;
aunque no se si esto soporte todos los tipos que tengas en tu base de datos.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.