DBSETRELATION()
 Relaciona dos áreas de trabajo
------------------------------------------------------------------------------
 Sintaxis

     DBSETRELATION(<nArea> | <cAlias>, <bExpr>, <cExpr>)
        --> NIL

 Argumentos

     <nArea> es un valor numérico que especifica el número del área de
     trabajo del área de trabajo hija.

     <cAlias> es un valor de caracteres que especifica el alias del área
     de trabajo hija.

     <bExpr> es un bloque de código que contiene la expresión de la
     relación en forma ejecutable.

     <cExpr> es un valor de caracteres que expresa la expresión
     relacional en forma textual.

 Devuelve

     DBSETRELATION() devuelve siempre NIL.

 Descripción

     DBSETRELATION() relaciona el área de trabajo especificada por <nArea> o
     <cAlias> (el área de trabajo hija), con el área de trabajo actual (el
     área de trabajo padre). Cualquier relación existente permanece activa.

     Las áreas de trabajo relacionadas sincronizan el área de trabajo hija
     con el área de trabajo padre. Esto se consigue desplazando
     automáticamente el área de trabajo hija cuando el área de trabajo padre
     se desplaza a un nuevo registro. Si existe un índice activo en el área
     de trabajo hija, al desplazar el área de trabajo padre se ejecuta una
     operación SEEK automática en el área de trabajo hija; la clave de
     búsqueda se basa en la expresión especificada mediante <bExpr> y/o
     <cExpr>. Si el área de trabajo hija no tiene un índice activo, al
     desplazar el área de trabajo padre se ejecuta un GOTO automático en el
     área de trabajo hija; el número de registro para GOTO se basa en la
     expresión especificada por <bExpr> y/o <cExpr>.

     La expresión de relación puede ser un bloque de código (<bExpr>) o un
     bloque de código y un texto equivalente (<cExpr>). Si se utilizan ambas
     versiones, deben ser equivalentes. Si se omite la versión de texto,
     DBRELATION() devolverá una cadena vacía para la relación.

     DBSETRELATION() realiza la misma función que un mandato SET RELATION
     estándar con la cláusula ADDITIVE. Si desea más información, consulte
     el mandato SET RELATION.

 Notas

     ■ Efectos laterales: DBSETRELATION() sólo garantiza la
        sincronización de las áreas de trabajo descritas más arriba. La
        expresión relacional no se evalúa necesariamente en un momento
        determinado, por medios particulares o en un determinado registro o
        conjunto de registros. Si la expresión relacional se basa en
        información externa al área de trabajo padre o a su fichero de base
        de datos asociado, el efecto es impredecible. Si la expresión cambia
        el estado de cualquier área de trabajo (por ejemplo, desplazando el
        cursor a un registro diferente o cambiando el contenido de un
        registro), el efecto es impredecible.

     ■ Contexto de evaluación: Al evaluar la expresión relacional, el
        área de trabajo padre se selecciona automáticamente como el área de
        trabajo actual antes de proceder a la evaluación; posteriormente, el
        área de trabajo anterior se restablece automáticamente.

     ■ Búsqueda aproximada: Las operaciones de búsqueda que se
        producen como parte del posicionamiento relacional no son nunca
        búsquedas aproximadas. Si el movimiento relacional no tiene éxito,
        el área de trabajo hija se sitúa en LASTREC() + 1, la función
        FOUND() devuelve falso (.F.) y el estado de EOF() es verdadero
        (.T.).

 Ejemplos

      Este ejemplo muestra una de los usos más frecuentes de la
        función DBSETRELATION():

        USE Empleado NEW
        USE Departamento NEW INDEX Dept
        SELECT Empleado
        DBSETRELATION("Departamento", {|| Empleado->Dept},;
                         "Empleado->Dept")
        LIST Empleado->Nombre, Departamento->Nombre

 Ficheros   La biblioteca asociada es CLIPPER.LIB.
 To download this example - click here.

See Also: DBCLEARREL() DBRELATION() DBRSELECT() FOUND()