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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-11-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
extraer nombre y tipo de campo

Hola a todos.
Me gustaria saber si hay alguna manera de hacer una sql a una tabla, de manera que nos devuelva el nombre de los campos de la tabla y el tipo de dato de cada uno


muchas gracias
Responder Con Cita
  #2  
Antiguo 02-11-2006
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Ésta puede ser la idea, pero no sé si funcionará con IbTables.
Código Delphi [-]
function HazSqlTabla(Dataset: TTable): string;
var
  i: Integer;
  str: string;
begin

  try
    Str:='Select ';
    for i := 0 to DataSet.FieldCount-1 do
    begin
      str := str + ' ' + DataSet.Fields[i].FieldName;
        if i <  DataSet.FieldCount-1 then
        Str:= Str+',';
    end;
    Str:=Str+(' FROM ' + DataSet.TableName);
    Result:=str;
  except
  ShowMessage('Se ha producido un Error');
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
s:String;
begin
ShowMessage(HazSqlTabla(Table1));
end;
Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 02-11-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
Cita:
Empezado por cuscus
hacer una sql a una tabla, de manera que nos devuelva el nombre de los campos de la tabla y el tipo de dato de cada uno
Para esto deberás utilizar las tabla del sistema de Interbase o Firebird. Estas son las comienzan por RDB$. Por ejemplo
Código SQL [-]
select * from RDB$RELATION_FIELDS where ...

Ahora sólo te falta buscar la tabla que contiene la información de los campos, nombres y tipos.
Responder Con Cita
  #4  
Antiguo 02-11-2006
cuscus cuscus is offline
Miembro
 
Registrado: abr 2005
Posts: 45
Poder: 0
cuscus Va por buen camino
gracias a los 2

lo de las tablas de sistema, quisiera tirar por ahi, pero no encuentro donde guarda el nombre de los campos. esta la tabla RDB$fields, pero ahi guarda un identificador, pero no el nombre del campo. ¿sabes por donde puede estar?
Responder Con Cita
  #5  
Antiguo 02-11-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
En el ejemplo que te he puesto están los nombres de los campos. Pero para vincular con la tabla, tipo y demás deberás esperar a que te conteste otro forero o buscar por Internet.

Un saludo!
Responder Con Cita
  #6  
Antiguo 02-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Cita:
Empezado por cuscus
gracias a los 2

lo de las tablas de sistema, quisiera tirar por ahi,
¿Por qué? ¿No resulta acaso más cómodo tirar de delphi?:
Código Delphi [-]
var DAtaset : TQuery;
begin
 Dataset.sql.text := 'select * from tabla where codigo = 1'; // solo necesitamos un registro.
Dataset.Open;
Dataset.FieldsDef.Update;
with Dataset.FieldsDef.item[i] do
begin
             case DataType of
              ftUnknown      : TipoDato:= 'ftUnknown';
              ftString       : TipoDato:= 'ftString';
              ftSmallint     : TipoDato:= 'ftSmallint';
              ftInteger      : TipoDato:= 'ftInteger';
              ftWord        : TipoDato:= 'ftWord';
              ftBoolean      : TipoDato:= 'ftBoolean';
             end;
     tipodato := FieldName + ' 'TipoDato; 
end;

Más o menos.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 02-11-2006 a las 20:18:24.
Responder Con Cita
  #7  
Antiguo 03-11-2006
Avatar de DarKraZY
DarKraZY DarKraZY is offline
Miembro
 
Registrado: ago 2003
Posts: 460
Poder: 21
DarKraZY Va por buen camino
No lo tengo claro Lepe, pero quizás es algo que está intentando hacer dentro de un procedimiento almacenado (stored procedure). En ese caso si serían de utilidad las tablas del sistema, y de nada le serviría los componentes en Delphi.
Responder Con Cita
  #8  
Antiguo 03-11-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
El hilo tablas del sistema te será de ayuda.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #9  
Antiguo 03-11-2006
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Resp

No tengo estoy en lacasa por lo tanto nu puedo ver las tablas de sistemas para decirte con exactitub.

Pero si usas ibexpert hay puede ver las tablas de sistemas. Si no sabes como encontrar la tabla que quieres mandas a buscar el nombre del campo, si mas no recuerdo esto se relaiona con un dominio y el dominio con el tipo real.

Nota. Pero creo que en las tablas de sistema de aprarecen algo asi como double precision o integer ... no estoy completmanete seguro.

despues de verirficar en la casa te doy el sql exacto.
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
  #10  
Antiguo 03-11-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
dicho sql está en el hilo al que hice referencia.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #11  
Antiguo 03-11-2006
Avatar de rastafarey
rastafarey rastafarey is offline
Miembro
 
Registrado: nov 2003
Posts: 927
Poder: 21
rastafarey Va por buen camino
Rsp

Gracias. Osea que no tengo que responder. Ya tienen la respouesta
__________________
Todo se puede, que no exista la tecnología aun, es otra cosa.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Nombre de tipo no válido Alexander Conexión con bases de datos 2 06-10-2006 18:47:19
extraer un parte de un campo fecha de interbase!!! antonio peña SQL 2 04-10-2006 02:11:47
Extraer solo nombre de archivo y extensión JODELSA Varios 11 13-07-2005 16:04:09
Extraer el nombre del mes de una fecha JODELSA Varios 4 20-05-2005 00:29:41
Extraer el nombre de una imagen acrophet Gráficos 5 08-07-2004 17:12:27


La franja horaria es GMT +2. Ahora son las 17:50:23.


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