Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 24-03-2010
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 20
ElDuc Va por buen camino
Question Listar la estructura de una DB

Buenas noches colegas,

Necesito hacer un componente que al introducirle el nombre de la base de datos se llene una lista con todas sus tabla y que al seleccionar una tabla de dicha lista, se llene otra lista con los campos de esa tabla y si puede ser con sus propiedades, relaciones etc.

Básicamente sería como un explorador SQL que pueda incorporar en mi aplicación.

Por ejemplo si existe algo así como [SELECT ALL TABLES]

Por fa, ayudadme si podéis.

Saludos.
Responder Con Cita
  #2  
Antiguo 24-03-2010
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Qué base de datos?
Responder Con Cita
  #3  
Antiguo 25-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Hola ElDuc, con componentes puedes utilizar los procedimientos GetTableNames, GetFieldNames de tu componente de base de datos (Database, ADOConnection, SQLConnection....)

Código Delphi [-]
//utilizaremos dos ListBox para llenar las tablas y campos
//Para las tablas
var
 slTablas : TStringList;
begin
 slTablas := TStringList.Create;
 Try
  Database1.GetTableNames(slTablas);
  ListBox1.Items.Assign(slTablas);
 Finally
  slTablas.Free;
 end;

//Para los campos
var
 slCampos : TStringList;
begin
 slCampos := TStringList.Create;
 Try
  Database1.GetFieldNames(ListBox1.Items[ListBox1.ItemIndex],slCampos);
  ListBox2.Items.Assign(slCampos);
 Finally
  slCampos.Free;
 end;

Dependiendo del componente que uses tienes mas opciones, por ejemplo con dbExpress puedes obtener los indices, procedimientos.....

Si quieres hacerlo con consultas, como te dice Casimiro depende de la Base de datos.

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #4  
Antiguo 25-03-2010
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 20
ElDuc Va por buen camino
Gracias a ambos por ayudarme,

Ahora aún no sé con qué trabajaré, SQL Server, NySql, ...,

De todas forma la sugerencia de Cero me parece muy interesante porque, según entiendo, esto es independente del tipo de base de datos que se utilice.

Lo probaré esta noche y os comento.

Gracias y hasta luego.
Responder Con Cita
  #5  
Antiguo 26-03-2010
ElDuc ElDuc is offline
Miembro
 
Registrado: jul 2004
Posts: 197
Poder: 20
ElDuc Va por buen camino
CONSEGUIDO.

Buenos chicos, esto ya está. aunque más tarde de lo que os dije.

Además de lo que me propuso Cero, que funciona perfectamente, he encontrado lo siguiente:
ADOConnection1.Fields[i].DataType, nos ofrece el tipo de dato definido en la base de datos.
AdoConnection1.Fields[i].Size, nos ofrece el tamaño definido en la base de datos.

Saludos.
Responder Con Cita
  #6  
Antiguo 26-03-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Talking

Cita:
Empezado por ElDuc Ver Mensaje
CONSEGUIDO.

Buenos chicos, esto ya está. aunque más tarde de lo que os dije.

Además de lo que me propuso Cero, que funciona perfectamente, he encontrado lo siguiente:
ADOConnection1.Fields[i].DataType, nos ofrece el tipo de dato definido en la base de datos.
AdoConnection1.Fields[i].Size, nos ofrece el tamaño definido en la base de datos.

Saludos.
Esto esta interesante, estuve probandolo

Aunque la ultima parte de saber el tipo de datos y el tamaño, no lo he podido conseguir, se podra hacer con TTable?

Digame algo al respecto.

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita
  #7  
Antiguo 30-03-2010
Avatar de Caro
*Caro* Caro is offline
Moderadora
 
Registrado: jul 2004
Ubicación: Cochabamba, Bolivia
Posts: 2.544
Poder: 22
Caro Va por buen camino
Cita:
Empezado por afunez2007 Ver Mensaje
Aunque la ultima parte de saber el tipo de datos y el tamaño, no lo he podido conseguir, se podra hacer con TTable?
Hola afunez2007, si tiene que ser sobre el DataSet (TTable, TQuery.....) :

Código Delphi [-]
var
 tipo : TFieldType;
 TipoDato : String;
 Size : Integer;
begin
 ...............................................................
 tipo := Query1.Fields[IndiceDelCampo].DataType;
 Case tipo Of
  ftString : TipoDato := 'Character or string field';
  ftInteger : TipoDato := '32-bit integer field';
  ftBoolean : TipoDato := 'Boolean field';
  ftFloat : TipoDato := 'Floating-point numeric field';
  ftCurrency : TipoDato := 'Floating-point numeric field';
  ftDate : TipoDato := 'Date field';
  ftTime : TipoDato := 'Time field';
  ftDateTime : TipoDato := 'Date and time field';
  ftAutoInc : TipoDato := 'Auto-incrementing 32-bit integer counter field';
  ftBlob : TipoDato := 'Binary Large OBject field';
  ................................................................ 
  // Y hay muchos mas
 end;
 Size := Query1.Fields[IndiceDelCampo].DataSize;
 ....................................................

Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar.
Responder Con Cita
  #8  
Antiguo 30-03-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Poder: 17
afunez2007 Va por buen camino
Lightbulb Logre Listarlas a traves de un Ttable

Hola pues al final he logrado hacer lo que estaba intentando con las ideas que Dio Caro.
Le agregue algunas cosillas, adjunto el proyecto para que lo vean.

Saludos
Archivos Adjuntos
Tipo de Archivo: zip DataNames.zip (12,2 KB, 19 visitas)
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Listar las tablas de una DB GustavoCruz SQL 3 25-11-2007 15:23:18
Listar ficheros con TCP djjosep Internet 1 31-05-2007 21:54:55
listar servidores sql jlgaytan SQL 5 10-11-2006 17:38:46
Listar una carpeta [Gunman] API de Windows 4 03-01-2006 16:25:43
Listar las PC lore Internet 9 01-02-2004 20:24:57


La franja horaria es GMT +2. Ahora son las 21:05:41.


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