SET RELATION
 Relaciona dos áreas de trabajo por un valor clave o por el número de registro
------------------------------------------------------------------------------
 Sintaxis

     SET RELATION TO [<expClave> | <nRegistro> INTO <xcAlias>]
        [, [TO] <expClave2> | <nRegistro2> INTO <xcAlias2>...]
        [ADDITIVE]

 Argumentos

     TO <expClave> es una expresión que lleva a cabo una búsqueda en el
     área de trabajo hija cada vez que el puntero del registro se desplaza
     en el área de trabajo padre. Para que este proceso funcione, el área de
     trabajo hija debe tener un índice en uso.

     TO <nRegistro> es una expresión que lleva a cabo una operación de
     ir al número de registro coincidente del área de trabajo hija cada vez
     que el puntero del registro se desplaza en el área de trabajo padre. Si
     <nRegistro> es igual a RECNO(), la relación utiliza el número del
     registro padre para posicionar el puntero en el mismo número de
     registro del área de trabajo hija. Para que un tipo de expresión
     numérica de relación se ejecute correctamente, el área de trabajo hija
     no debe tener un índice en uso.

     INTO <xcAlias> identifica el área de trabajo hija y puede
     especificarse como un nombre de alias literal o como una expresión de
     caracteres entre paréntesis.

     ADDITIVE añade las relaciones hija especificadas a las relaciones
     existentes ya establecidas en el área de trabajo actual. Si no se
     especifica esta cláusula, se anulan las relaciones existentes en el
     área de trabajo actual antes de establecerse las nuevas relaciones
     hija.

     SET RELATION TO sin argumentos anula todas las relaciones definidas en
     el área de trabajo actual.

 Descripción

     SET RELATION es un mandato de base de datos que enlaza un área de
     trabajo padre con una o más áreas de trabajo hijas utilizando una
     expresión clave, el número de registro o la expresión numérica. Cada
     área de trabajo padre puede enlazarse con hasta ocho áreas hija. Una
     relación hace que el puntero del registro se desplace en el área hija
     de acuerdo con el movimiento del puntero en el área de trabajo padre.
     Si no se encuentra ninguna coincidencia en el área de trabajo del área
     de trabajo hija, el puntero del registro hijo se sitúa en LASTREC() +
     1, EOF() devuelve el valor verdadero (.T.) y FOUND() devuelve el valor
     falso (.F.).

     El método utilizado para enlazar las áreas de trabajo padre e hijas
     dependen del tipo de <expClave> y de la presencia de un índice activo
     en el área de trabajo hija. Si ésta tiene un índice activo, la
     operación de búsqueda es un SEEK estándar. Si no tiene un índice activo
     y el tipo de <expClave> es numérico, se lleva a cabo una operación GOTO
     en el área de trabajo hija.

 Notas

     ■ Relaciones cíclicas: No relacione un área de trabajo padre
        consigo misma ya sea directa o indirectamente.

     ■ Búsqueda aproximada: SET RELATION no admite SOFTSEEK y siempre
        se comporta como si se hubiera establecido SET SOFTSEEK OFF aunque
        se haya establecido lo contrario. Esto significa que si no se
        encuentra un registro coincidente en el área de trabajo hija, el
        puntero del registro siempre se sitúa en LASTREC() + 1.

     ■ Relaciones de número de registro: Para relacionar dos áreas de
        trabajo basándose en números de registro coincidentes, utilice
        RECNO() para la expresión SET RELATION TO y compruebe que el área de
        trabajo hija no tiene índices activos.

 Ejemplos

      Este ejemplo relaciona tres áreas de trabajo en una
        configuración múltiple padre-hija con Cliente relacionado con
        Facturas y CodPost:

        USE Facturas INDEX Facturas NEW
        USE CodPost INDEX CodPostal NEW
        USE Cliente NEW
        SET RELATION TO NumClien INTO Facturas, CodPostal INTO CodPost
        LIST Cliente, CodPost->Ciudad, Facturas->Numero, ;
                 Facturas->Cantidad

      Posteriormente, puede añadir una nueva relación hija con la
        cláusula ADDITIVE:

        USE Pedidos INDEX Pedidos NEW
        SELECT Cliente

        SET RELATION TO NumClien INTO Pedidos ADDITIVE

 Ficheros   La biblioteca asociada es CLIPPER.LIB.

 To download this example - click here.

See Also: DBRELATION() DBRSELECT() FOUND() RECNO() SET INDEX