PDA

Ver la Versión Completa : dbExpress + Constraint


totote
22-12-2007, 16:11:29
Buenas, Hay alguna forma de saber que campos son PK o FK en una tabla desde dbExpress, por ejempo para otener las tablas de una base de datos y sus campos es:


// Obtener Tablas
DataModule.SQLConnection.GetTableNames(ListBox1.Items,False);
// Obtener Campos
Tabla:= ListBox1.Items[ListBox1.ItemIndex];
DataModule.SQLConnection.GetFieldNames(Tabla,ListBox2.Items);
Lo que necesito saber ahora es como se cuales campos son PK o FK. Saludos

Al González
22-12-2007, 18:59:22
¡Hola a todos!

Totote: No especificas qué base de datos utilizas, ni la versión de Delphi / dbExpress, pero si por casualidad estuvieras trabajando con Firebird / InterBase, con esta consulta SQL puedes obtener los nombres de los campos de una tabla que constituyen llaves foráneas (FKs) —una de las dos cosas que buscas—.

Select ISe.RDB$Field_Name From RDB$Index_Segments ISe

Inner Join RDB$Relation_Constraints RC
On RC.RDB$Index_Name = ISe.RDB$Index_Name

Where (RC.RDB$Relation_Name = :Tabla) And
(RC.RDB$Constraint_Type = 'FOREIGN KEY')

Mirando el contenido de la tabla RDB$Relation_Constraints, podrás descubrir fácilmente cómo obtener entonces los campos que son llaves primarias.

Confírmanos qué base de datos utilizas. En general, no dejes de retroalimentar el hilo. Gracias.

Un abrazo foráneo.

Al González. :)

totote
22-12-2007, 23:41:49
Ups!!! fue sin querer, Si la version de delphi es 2007, no se que versión de dbExpress será, y el motor de base de datos es firebird es 2.0, ahora pruebo esto que me estás diciendo, hay algun sitio para más información, nunca se me ocurrió buscar por el lado del motor, pero ahora lo haré tambien. Gracias por la ayuda Al