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 14-02-2007
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
Conocer lista de tablas de Base Datos (Firebird 2.0 y Componentes IBObjects)

Esta pregunta es parecida a la de más abajo, pero...

¿alguien sabe como obtener los nombres de las tablas de una base de datos Firebird 2.0 usando los componentes IBObjects 4.7 en delphi?.

Necesito saberlo, para que a la hora de crear una tabla saber si esta existe o no en la base de datos.

Saludo y gracias a todos...
Responder Con Cita
  #2  
Antiguo 14-02-2007
fdelamo fdelamo is offline
Miembro
 
Registrado: oct 2005
Ubicación: Sotoca de Tajo - Guadalajara (ESP)
Posts: 86
Poder: 19
fdelamo Va por buen camino
No he utilizado los IBObjects, pero supongo que habrá un componente para hacer una query, ¿no?

Prueba como se dice Aquí, o lo que también se puede hacer es intentar crear la tabla de todas formas con un try ... except y controlar el error que da si la tabla existe.

Un saludo
__________________
Sotoca Web
Responder Con Cita
  #3  
Antiguo 14-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
En FB 1.5 esto furula:
Código Delphi [-]
const SALTOLINA = #13#10;

procedure CheckTablename(const TableName:string);
var Tablas:string;
begin
    tablas := uppercase(GetTableNames);
    if Pos(uppercase(TableName),tablas)= 0 then
      raise Exception.Create(Format('La Tabla "%s" no existe en la BBDD.'+saltolinea+
                               'Tablas Correctas:'+SALTOLINEA+
                               '%s',[TableName,tablas]));
end;

function GetTableNames:string;
var Tablas:TStringList;
    m :TMDOQuery;
begin
  Tablas := TStringList.Create;
  m := TMDOQuery.Create(nil);
  try
    m.Database:= dtm.DB;
    m.Transaction:= dtm.Trans;
{----------------------------NOMBRES DE TABLAS Y VISTAS ----------------------}
    m.SQL.Text:=   'SELECT RDB$RELATION_NAME FROM RDB$RELATIONS' + {do not localize}
                          ' WHERE RDB$SYSTEM_FLAG = 0'; {do not localize}

    m.Open;
    lpsql.VerResultadoSql(m,tablas);
    Result := Format('Tablas existentes en la BBDD:'+saltolinea+
                               '%s',[insertbreakline(tablas.CommaText,76)]);

  finally
    FreeAndNil(m);
  end;
end;

VerResultadossql: toma todos los registros de la consulta "m", (cada registro es el nombre de una tabla o vista) y las añade al StringList "tablas".

InsertBreakLine hace lo propio, cada 76 caracteres, añade un salto de linea.

No incluyo esas funciones, ya que uso otras rutinas de terceros y se alargaría mucho el post.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 15-02-2007
mpedrero mpedrero is offline
Registrado
 
Registrado: sep 2006
Posts: 9
Poder: 0
mpedrero Va por buen camino
Antes de nada, gracias a todos por la ayuda, acabo de encontrar la solución a mis problemas, al menos usando sentencias SQL... para colaborar aqui vá la sentencia SQL, que espero sea la definitiva, para obtener únicamente las tablas de una base de datos:

Código SQL [-]
SELECT RDB$RELATION_NAME
FROM RDB$RELATIONS
WHERE RDB$SYSTEM_FLAG = 0 AND
RDB$RELATION_NAME NOT IN (SELECT RDB$VIEW_NAME
FROM RDB$VIEW_RELATIONS);

Espero que os sirva...

Ahora, espero impaciente, que alguien descubra como obtener las tablas sin usar sentencias SQL, usando IBObjects.
Gracias a todos por la ayuda...
Responder Con Cita
  #5  
Antiguo 15-02-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
He utilizado Delphi de mayordomo alguna vez. Si cuando meto un objeto TTable puedo seleccionar las tablas de la bbdd de una lista, seguro que existe una función ya creada que lo haga. Además la ha escrito un especialista, seguro.
A mi me funciona con Access, pero seguro que funciona con cualquier motor de bbdd ( cual no funciona con Delphi ? )

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOConnection1.Connected:= True;
ADOConnection1.GetTableNames(Memo1.lines,true);
end;

Suerte y un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #6  
Antiguo 16-02-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Hombre, depende de los componentes que uses.

Cuando en el IDE eres capaz de elegir una tabla, eso corre por parte de los editores de propiedades de esos componentes. Pero está hecho para el IDE, no para usarlos en tu código.

Es cierto que Delphi tiene esa alegría, Todo lo que se propone en el IDE, también lo ofrecen por código para que lo uses como programador, pero no es algo obligatorio. Incluso cuando te ofrecen el código fuente de esos editores de propiedades, resulta algo engorroso extraer el código que hace esa opción que necesitas.

Por ejemplo, te habrás fijado que los componentes TIBDataset implementan un parser para crear las cadenas SQL de actualización, borrado, inserción, etc, ese parser no está inmediatamente disponible para usarlo en tus programas.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
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
Conocer lista de tablas de Base Datos (Firebird) toni.vi Conexión con bases de datos 6 15-02-2007 11:34:32
Guardar en 1 base de datos SQL, datos procedentes de 2 tablas distintas adaypr C++ Builder 1 05-09-2006 11:56:33
Conocer el número de conexiones con mi base de datos Boris Conexión con bases de datos 1 08-07-2006 16:49:23
Lista desde una Base de datos Chiro Tablas planas 3 21-04-2004 11:19:58
Conocer usuarios conectados a Base de datos Chojj Oracle 2 19-06-2003 10:26:12


La franja horaria es GMT +2. Ahora son las 11:40:49.


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