Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-05-2010
MLROJO MLROJO is offline
Miembro
 
Registrado: jul 2004
Ubicación: Granada
Posts: 26
Poder: 0
MLROJO Va por buen camino
Componentes ADO y propiedades generales de Base de datos

Buenas,

Me encuentro realizando un programa, a nivel personal, que me permita poder trabajar con varios gestores de bases de datos.

Este programa, por una parte consiste en permitir realizar selects, updates, inserts sobre tablas de una base de datos sobre la que previamente conectamos.

Por otra parte, muestra la estructura de la base de datos, mostrando tablas, vistas, stored procedures, usuarios propietarios de las tablas, campos clave de una tabla, etc..

Es en esta última donde me encuentro algo mas perdido.

Hasta el momento estoy usando:

Código Delphi [-]
adoConection.GetTableNames(ListBox1.items);


Para obtener las tablas y vistas de la base de datos sobre la que estoy conectado.

Código Delphi [-]
adoConection.GetProcedureNames(ListBox2.items);


Para obtener los stored procedure.

Luego uso una función que recorre la tabla que tenga en un TAdoTable y me muestra el tipo de cada campo y su longitud.

Me gustaria mejorar todo esto un poco y poder obtener el propietario de cada tabla que me devuelve ese GetTableNames y poder distinguir entre vistas y tablas, etc.

Posiblemente me equivoque y tal vez esté buscando una forma de obtener las "propiedades generales" de la base de datos de forma incorrecta, pero no conozco mas que esta forma o bien mediante consultas como:

Código SQL [-]
select * from sysobjects where xtype = 'U'


Que en este caso solo serviria para SQL Server y pretendo que la aplicación pueda trabajar con varios como Intersystems Caché, SQL Server.

En definitiva, creo que no estoy buscando un trozo de código que haga algo en concreto, sino ideas, indicaciones, consejos, pasos a seguir para explotar un poco mejor esa información que creo que se puede obtener toda desde los componentes TAdoConnection y TAdoTable o TAdoQuery.

Gracias de antemano,

Un saludo!
Responder Con Cita
  #2  
Antiguo 10-05-2010
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Normalmente la mayoría de sistemas, poseen un diccionario, aunque el acceso será distinto para los diferentes sistemas.
Tal vez deberías almacenar esas diferencias, para poder acceder de forma diferente a cada uno de ellos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 10-10-2011
MLROJO MLROJO is offline
Miembro
 
Registrado: jul 2004
Ubicación: Granada
Posts: 26
Poder: 0
MLROJO Va por buen camino
Hola,

Retomando un poco este tema y con algo mas de avances, os cuento.

Actualmente cargo un esquema en un DataSet, según el equema que cargo, puedo consultar unas cosas u otras (bases de datos, tablas, etc..).

Código Delphi [-]
ADOConnection1.OpenSchema(siCatalogs, EmptyParam, EmptyParam, ADODataSet1);

Cambiando el primer parámetro, en esete caso siCatalogs, por el esquema que quiera cargar. Permitiendome obtener usuario propietario de tablas, campos clave, etc. etc.

Esto funciona correctamente en SQL Server pero no en todas las bases de datos, no he tenido opción de probar más que en Intersystem Caché y no todos los esquemas me devuelven información.

Realmente no se si es que no utilizo bien los componentes o es que los componentes ADO no funcionan en este aspecto para todas las bases de datos que permiten conectar por ODBC.

El objetivo es intentar minimizar el número de sentencias contra cada diccionario según el motor de base de datos, ya que supongo que esta información se puede obtener de una forma mas o menos "automática", sin tantisima mecanización, o tal vez esté equivocado.

¿Se os ocurre algo?

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
Obtener Datos generales de la bd utilizada Lizette Varios 2 08-03-2009 06:41:11
No tengo los componentes de Base de Datos JuanchoRM Conexión con bases de datos 3 09-02-2009 10:55:10
Informacion sobre componentes de base de datos ErenioDhG Conexión con bases de datos 0 31-03-2008 20:57:18
Componentes para base de datos Kristian Patiño Varios 5 05-03-2008 16:33:49
Extraer datos generales de un archivo Albano Varios 1 13-06-2007 10:58:38


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


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