Tablerelations · HTML Copiar TableRelations - Business Central

Estructuras de Datos

TableRelations

Dificultad: 5/10

La propiedad TableRelation se define a nivel de campo dentro de una tabla. Su función es vincular el campo actual con otra tabla (integridad referencial), asegurando que el dato introducido exista realmente en la tabla de origen.

Al configurar esto, Business Central genera automáticamente el icono de "lupa" o desplegable en las páginas para seleccionar el registro.

Sintaxis básica

AL
field(<idCampo>; "<NombreCampo>"; <TipoDato>)
{
    TableRelation = "<NombreTablaOrigen>";
}

También puedes apuntar directamente a un campo concreto de la tabla relacionada, no solo a la tabla. Esto es útil cuando quieres filtrar por un campo específico distinto de la PK:

AL
field(<idCampo>; "<NombreCampo>"; <TipoDato>)
{
    TableRelation = "<NombreTablaOrigen>"."<NombreCampo>";
}

Propiedades relacionadas

Propiedad Descripción
TableRelation Vincula el campo con otra tabla. BC genera automáticamente el desplegable de búsqueda en la interfaz.
ValidateTableRelation Si es true (por defecto), BC comprueba que el valor introducido existe en la tabla relacionada antes de guardarlo.

Relaciones condicionales

Puede tener una relación condicional, dependiendo del valor de otros campos. Esto permite que un mismo campo apunte a tablas distintas según el contexto:

AL
field(<idCampo>; "<NombreCampo>"; <TipoDato>)
{
    TableRelation = if ("<NombreCampo1>" = const(<opt1>)) <opt1>.<PK>
    else if ("<NombreCampo2>" = const(<opt2>)) <opt2>.<PK>
    else if ("<NombreCampo3>" = const(<optN>)) <optN>.<PK>;
}

Ejemplo completo

En una tabla de préstamos, vinculamos el campo "No. Socio" con la tabla "Socio" y el campo "No. Libro" con la tabla "Libro":

AL
table 50103 "Prestamo"
{
    fields
    {
        field(1; "No.";      Code[20]) { }
        field(2; "No. Socio"; Code[20])
        {
            TableRelation = "Socio"; // el campo apunta a la tabla Socio
        }
        field(3; "No. Libro"; Code[20])
        {
            TableRelation = "Libro"; // el campo apunta a la tabla Libro
        }
        field(4; "Fecha Prestamo";   Date) { }
        field(5; "Fecha Devolucion"; Date) { }
        field(6; "Devuelto";         Boolean) { }
    }
    keys
    {
        key(PK; "No.") { }
        key(SK1; "No. Socio") { }
        key(SK2; "No. Libro") { }
    }
}

💡 Tips

  • El campo que tiene TableRelation debe ser del mismo tipo y tamaño que la PK de la tabla relacionada (normalmente Code[20]).
  • BC genera automáticamente el icono de lupa en la interfaz: el usuario puede buscar y seleccionar el registro sin teclear el código manualmente.
  • ValidateTableRelation = false permite introducir valores que no existan en la tabla relacionada. Úsalo con precaución.
  • Las relaciones condicionales son útiles cuando un campo puede apuntar a distintas tablas según el tipo de registro (p.ej. proveedor o cliente).
← Volver a Teoría