Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Conocer clave de tabla (https://www.clubdelphi.com/foros/showthread.php?t=25102)

davezf 12-09-2005 19:45:30

Conocer clave de tabla
 
Hola, estoy utilizando ADO para conectar a BDs Access o SQL Server.

Hay alguna forma de saber cual es la clave de una tabla?

Johnny Q 12-09-2005 21:07:12

La verdad no te entiendo cuando mencionas la clave de una tabla, no sera más bien la clave de la base de datos?

davezf 12-09-2005 21:14:54

no, quizas no me he explicado bien.

Lo que quiero es saber el nombre del campo de una tabla desde delphi. Se que
se puede ver la definicion de los campos pero no he visto nada acerca de el
campo forma parte o no de la clave primaria de la tabla

Johnny Q 12-09-2005 21:48:31

Necesitas recuperar los nombres de los campos de una tabla, o recuperar los datos de un campo de una tabla?

fredo 12-09-2005 23:30:38

hay diferentes formas segun la base de datos que ocupes, por ejemplo en MySQL puedes saber ejecutando "Describe Table <Tabla>", puedes empesar por ahí.

Saludos y suerte. :D

davezf 13-09-2005 08:15:51

Necesito saber el nombre con la descripcion de cada uno de los campos de una tabla. Queria que fuese lo mas generico posible.

Utilizo componentes ADO para conectarme y con estos puedes obtener la definicion de los campos (nombre, tipo, etc) pero necesitaba, ademas, conocer si forma parte de la clave primaria o no.

Neftali [Germán.Estévez] 13-09-2005 09:43:12

La mayoria de las Bases de Datos tienen tablas de catálogos donde puedes consultar los nombres de tablas, los nombres de campos, los tipos, índices,....
En el caso de SQL server, como comentas, posee las tablas, sysColumns, sysObjects, sysIndexes,... (todas las que empiezan por sys)

Para saber los nombres de las tablas puedes ejecutar:
Código SQL [-]
   select * from sysobjects where xtype='U'

Para conocer todos los campos de todas las tablas:
Código SQL [-]
 select * from syscolumns

Para obtener sólo los campos de una tabla:
Código SQL [-]
 select * from syscolumns inner join sysobjects on sysobjects.id=syscolumns.id 
 where sysobjects.xtype='U' and sysobjects.name='Monedas'

Si además quieres saber el tipo de cada campo, debes usar la tabla systypes:
Código SQL [-]
 select systypes.Name, syscolumns.* from syscolumns 
     inner join sysobjects on sysobjects.id=syscolumns.id 
     inner join systypes on systypes.xtype=syscolumns.xtype
 where sysobjects.xtype='U' and sysobjects.name='tmoneda'

.. y así todo lo que necesites. El diccionario de datos varía de estructura segun el SGBD, pero son similares en todos, es cuestión de echare un vistazo y mirar la ayuda.

davezf 13-09-2005 09:52:20

Muchas gracias, a partir de aqui es cuestion de ver el SGBD en particulas.

Solo 1 detalle, en Access esto no se puede hacer o tambien hay una especie de catalogo o algo asi?:confused:

Neftali [Germán.Estévez] 13-09-2005 10:16:43

Si abres una BD Access, verás que en las opciones de configuración se puede activar que se visualizen Tablas ocultas y de sistema. Si activas la visualización de los objetos de sistema, te aparecerán las tablas: MsysObjects, MsysQuerys,...

davezf 13-09-2005 10:36:06

Muchas gracias por la ayuda, con esto ya tengo todo.

Muy agradecido.


La franja horaria es GMT +2. Ahora son las 04:14:02.

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