¿Obtener una lista de restricciones de clave externa para una tabla en ms-access?

Estoy tratando de usar la ventana de relaciones para ver las relaciones entre tablas en una base de datos de MS-Access. Oculté todas las otras tablas y encontré una clave externa en una de las tablas que parece que debería vincularse a otra tabla con una clave principal, la información que necesito rastrear.

¿Hay alguna forma de enumerar las restricciones de clave externa existentes en una tabla en Access, al igual que la MOSTRAR CREATE TABLE sintaxis en MySQL?

preguntado el 31 de julio de 12 a las 15:07

1 Respuestas

La colección tabledef en DAO y ADOSchemas mostrará claves foráneas.

Dim tdf As TableDef
Dim db As Database
Dim ndx As Index

Set db = CurrentDb

For Each tdf In db.TableDefs
    For Each ndx In tdf.Indexes
        If ndx.Foreign = True Then
            Debug.Print tdf.Name, ndx.Name
            For Each fld In ndx.Fields
                Debug.Print fld.Name
            Next
        End If
    Next
Next

Relación

Dim rel As DAO.Relation
Dim db As Database
Set db = CurrentDb

For Each rel In db.Relations
    Debug.Print rel.Name, rel.ForeignTable
    For Each fld In rel.Fields
        Debug.Print fld.Name
    Next
Next

esquema ADOS

Dim cn As ADODB.Connection
Dim rs As ADODB.Recordset

Set cn = CurrentProject.Connection

Set rs = cn.OpenSchema(adSchemaForeignKeys)

Do While Not rs.EOF
    For i = 0 To rs.Fields.Count - 1
        Debug.Print rs.Fields(i).Name & ":- " & rs.Fields(i)
    Next
    rs.MoveNext
Loop

Finalmente, hay una tabla de sistema oculta:

SELECT * FROM MSysRelationships

Respondido el 15 de enero de 14 a las 16:01

Hay una tabla de sistema oculta MSysRelations que muestra todas las relaciones, pero es una característica no admitida: SELECT * FROM MSysRelations, no hace falta decirlo, pero lo haré, no te metas con eso. - fionnuala

Dentro de MS Access, sí, pero es poco probable que funcione fuera de Access. - fionnuala

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.