Share via


SET RELATION (Comando)

Establece una relación entre dos tablas abiertas.

SET RELATION TO [eExpression1 INTO nWorkArea1 | cTableAlias1
   [, eExpression2 INTO nWorkArea2 | cTableAlias2 ...]
   [IN nWorkArea | cTableAlias] [ADDITIVE]]

Parámetros

  • eExpression1
    Especifica la expresión relacional que establece una relación entre las tablas primaria y secundaria. La expresión relacional suele ser la expresión de índice del índice de control de la tabla secundaria.

    El índice de la tabla secundaria puede ser un índice (.IDX) de una sola entrada, un índice (.CDX) compuesto estructural de varias entradas o un índice compuesto independiente. Si se trata de un índice compuesto, especifique la etiqueta de índice adecuada para ordenar la tabla secundaria. SET ORDER se puede utilizar para especificar la etiqueta de índice que ordena la tabla secundaria.

    Por ejemplo, tomemos las tablas customer y orders descritas en la sección Comentarios siguiente. Suponga que la tabla secundaria orders se ha indizado y ordenado por el número del cliente con este comando:

    SET ORDER TO TAG cust_id
    

    Para relacionar las tablas customer y orders según el número del cliente, seleccione el área de trabajo que contiene la tabla primaria customer, o incluya la cláusula IN para especificar el área de trabajo o el alias de la tabla primaria, y luego ejecute SET RELATION, especificando la expresión de índice con la siguiente expresión relacional:

    SET RELATION TO cust_id INTO orders
    

    Es necesario que la tabla secundaria esté indizada, a menos que la expresión relacional sea numérica. Visual FoxPro muestra un mensaje de error si ejecuta SET RELATION con una expresión relacional no numérica y la tabla secundaria no está ordenada con un índice.

    Si eExpression1 es numérica, se evalúa cuando el puntero de registro se mueve en la tabla primaria. El puntero de registro de la tabla secundaria se mueve en este momento al número de registro eExpression1.

  • INTO nWorkArea1 | cTableAlias1
    Especifica el número del área de trabajo (nWorkArea1) o el alias de tabla (cTableAlias1) de la tabla secundaria.

  • eExpression2 INTO nWorkArea2 | cTableAlias2 ...
    Especifica una expresión relacional (eExpression2) y una o varias tablas secundarias para establecer una relación adicional entre la tabla primaria y las tablas secundarias. A partir de un único comando SET RELATION, puede crear varias relaciones entre una sola tabla primaria y varias tablas secundarias. Incluya una coma delante de cada relación.

    nWorkArea2 especifica un número de área de trabajo y cTableAlias2 especifica un alias de tabla para la tabla secundaria.

  • IN nWorkArea
    Especifica el área de trabajo de la tabla primaria.

  • IN cTableAlias
    Especifica el alias de la tabla primaria.

    La cláusula IN le permite crear una relación sin seleccionar primero el área de trabajo de la tabla primaria. Si omite nWorkArea y cTableAlias, la tabla primaria tiene que estar abierta en el área de trabajo seleccionada actualmente.

  • ADDITIVE
    Mantiene las relaciones existentes en el área de trabajo actual y crea la relación especificada. Si omite ADDITIVE, se romperán todas las relaciones del área de trabajo actual y se creará la relación especificada.

Observaciones

Antes de que pueda establecer una relación, una tabla (la tabla primaria) debe estar abierta y la otra (la tabla secundaria) debe estar abierta en otra área de trabajo.

Las tablas relacionadas tienen normalmente un campo en común. Por ejemplo, suponga que una tabla customer contiene información de clientes. Tiene campos para el nombre, la dirección y un número de cliente único. Una segunda tabla orders contiene información sobre pedidos. También tiene un campo con el número de cliente, junto con los campos de fecha e información de envío.

SET RELATION relaciona estas dos tablas basándose en su campo común: el campo de número del cliente. Para establecer la relación, la tabla secundaria debe estar indizada por el campo común. Después de establecer la relación, cada vez que mueva el puntero de registro a un registro con un número de registro determinado de la tabla primaria customer, el puntero de registro de la tabla secundaria orders se moverá al registro que tiene el mismo número de cliente. Si no se encuentra un registro que coincida en la tabla secundaria, el puntero de registro de la tabla secundaria se colocará al final de la tabla.

Ejecute SET RELATION TO sin ningún argumento para quitar todas las relaciones del área de trabajo seleccionada actualmente. SET RELATION OFF se puede utilizar para quitar una relación primaria-secundaria específica.

Vea también

INDEX | RELATION( ) | SET ORDER | SET RELATION OFF | SET SKIP | TARGET( )