Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2005
subzero subzero is offline
No confirmado
 
Registrado: ene 2004
Ubicación: Móntería - Córdoba - Colombia
Posts: 289
Poder: 0
subzero Va por buen camino
Question Conocer el tipo de Campo de una tabla

Hola amigos del foro:

Estoy creando un procedimiento que me genere un archivo plano de una tabla que se encuentra en interbase, el proceso de generación del archivo (*.txt) es todo un exito el único problema que tengo es con los campos "Date", ya que cuando en la tabla tengo un valor por ejemplo 25/07/2005 al convertirlo me muestra 2005-07-25.

Alguien conoce o sabe como se puede identificar el tipo del campo en una tabla de interbase en tiempo de ejecución.

Nota:
Estoy utilizando interbase 6.0 y Delphi 7.0
Responder Con Cita
  #2  
Antiguo 26-07-2005
Avatar de Rufus
Rufus Rufus is offline
Miembro
 
Registrado: may 2004
Ubicación: Canarias
Posts: 193
Poder: 20
Rufus Va por buen camino
Yo tengo implementado un procedimiento genérico en las base de datos que devuelve los nombres y los tipos de los campos de una tabla que se le sa como parámetro de entrada y devuelve dos parámetros de tipo cadena, uno indicando los nombres de los campos y otro los tipos de los campos, ambos separados por comas. Los tipos son unos números que indican justamente eso, de que tipo es el campo. Sería tal que asi:
Código SQL [-]
CREATE PROCEDURE OBTENERCAMPOS (
TABLA VARCHAR(30)
)
RETURNS (
CAMPOS VARCHAR(500),
TIPOS VARCHAR(80)
)
AS
declare variable uncampo char(30);
declare variable untipo varchar(3);
begin
campos = '';
tipos = '';
for execute statement
'Select lower(a.rdb$field_name),cast(b.rdb$field_type as varchar(3)) from rdb$relation_fields a 
join rdb$fields b on a.rdb$field_source = b.rdb$field_name where a.rdb$relation_name = '''
|| upper(tabla) || '''' into :uncampo, :untipo
do
begin
if (uncampo is not null) then campos = campos || rtrim(uncampo) || ' ';
if (untipo is not null) then tipos = tipos || untipo || ' ';
end
end
;
Luego en mi aplicación hago que cuando necesite saber los tipos de campo que tiene una tabla, lo consulto, por ejemplo si necesito meter los campos de la tabla facturas en un combobox, sabiendo de qué tipo es cada campo hago así:
Código Delphi [-]
dm.QrEscritura.SQL.Text := 'execute procedure obtenercampos(''FACTURAS'')'; 
dm.TrEscritura.StartTransaction;
dm.QrEscritura.ExecQuery;
//Ahora voy a meter los nombres de los campos en un combobox
Cbcampos.Properties.Items.CommaText := dm.QrEscritura.FldByName['CAMPOS'].Asstring;
//y ahora meto los tipos de los campos en una variable TStrings que he declarado anteriormente
Tipos.CommaText := dm.QrEscritura.FldByName['TIPOS'].Asstring;
dm.QrEscritura.Close;
dm.TrEscritura.Commit;
En este caso puedo ver de que tipo es cada campo cuando el usuario selecciona un campo del combobox que he rellenado, simplemente mirando el TStrings "Tipos" y pasandole el índice del combobox.
Aquí algunos de los números de los tipos:
7 -> smallint
8 -> integer
12 -> date
14 ->char
37 -> varchar

Puedes adaptar todo esto a lo que necesites
__________________
Milo

Última edición por Rufus fecha: 26-07-2005 a las 10:35:48.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:52:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi