¡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—.
Código SQL
[-]
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.