->
 Asignación de alias-binario                     (Especial)
------------------------------------------------------------------------------
 Sintaxis

     <idAlias>-><idCampo>
     <idAlias>->(<exp>)
     (<nAreaTrabajo>)-><idCampo>
     (<nAreaTrabajo>)->(<exp>)
     FIELD-><idVar>
     MEMVAR-><idVar>

 Operandos

     <idAlias> es el nombre de un área de trabajo no seleccionada a la
     que se desea acceder. Debe referirse a un área de trabajo de un fichero
     de base de datos activado mediante USE.

     <nAreaTrabajo> es el número del área de trabajo no seleccionada a
     la que se desea acceder.

     <idCampo> es el nombre de un campo en el área de trabajo
     especificada.

     <exp> es una expresión de cualquier tipo de datos que se va a
     ejecutar en el área de trabajo especificada. Si se utiliza como segundo
     operando una expresión más complicada que una referencia de campo
     sencilla, la expresión debe escribirse entre paréntesis ().

     <idVar> es cualquier identificador válido de CA-Clipper. Si se ha
     especificado FIELD o MEMVAR, el identificador deberá ser una referencia
     a un campo de base de datos o a una variable de memoria (pública o
     privada).

 Descripción

     Cuando el primer operando se utiliza con un <idAlias>, el operador
     alias (->) accede a la información de campos o evalúa una expresión en
     el área de trabajo indicada. El operador de alias selecciona
     implícitamente el área identificada con <idAlias> antes de evaluar el
     operando <idCampo> o <exp>. Cuando se completa la evaluación, se
     selecciona de nuevo el área de trabajo original. Las referencias de
     alias pueden encontrarse dentro de una expresión o aisladas en una
     línea:

     ? Cliente->Nombre
     Cliente->( TransaccionActual())

     La utilización de operadores de alias permite:

      Acceder a información en áreas de trabajo no seleccionadas
        dentro de expresiones

      Acceder a la información de entorno desde áreas de trabajo no
        seleccionadas

      Acceder a información desde áreas de trabajo no seleccionadas
        en modos tales como REPORT y LABEL FORM

      Escribir un código más compacto

     Además de permitir la evaluación de expresiones y campos desde áreas de
     trabajo no seleccionadas, el operador de alias hace una referencia
     explícita a un campo o variable utilizando los alias de palabra clave
     FIELD o MEMVAR. MEMVAR obliga a que <idVar> haga referencia a una
     variable de memoria y FIELD obliga a que haga referencia a un campo de
     base de datos. Estos identificadores especiales de alias evitan
     ambigüedades cuando existen conflictos entre nombres de variables de
     memoria y nombres de variables de campo. Recuerde que cualquier
     referencia a un identificador de variable que no venga precedido de un
     alias se toma por defecto como referencia a un campo si se están
     utilizando variables de campo y de memoria con el mismo nombre. Para
     evitarlo, utilice la opción /V durante la compilación.

     Además de especificar el alias como identificador, puede acceder al
     área de trabajo objeto utilizando una expresión que devuelva el número
     del área de trabajo si la expresión se indica entre paréntesis. Con
     ello podrá utilizar números de área de trabajo como manejadores, lo que
     es útil para pasar referencias a áreas de trabajo sin utilizar macros,
     alias, nombres, etc.

 Ejemplos

      Este ejemplo accede a información de bases de datos y de áreas
        de trabajo en un área de trabajo no seleccionada:

        USE Cliente NEW
        USE Facturas NEW
        ? Cliente->NomCliente        // Resultado: Jose Martinez
        ? Cliente->(RECNO())         // Resultado: 1
        ? Cliente->(FOUND())         // Resultado: .F.
        ? Cliente->(Ciudad + ",
        " + Provincia + ;
        "  " + Codigo Postal)        // Resultado: Coslada,Madrid
                                     //            28710

      Este ejemplo utiliza una función definida por el usuario
        (MiBusqueda()) como un operando del operador de alias para una
        operación común que normalmente requiere muchas más sentencias:

        IF Facturas->(MiBusqueda(NumCliente))
           <Tratar cliente>...
        ELSE
           <Procesar que no se encontró>...
        ENDIF
        RETURN

        FUNCTION MiBusqueda( cBusqueda )
           SEEK cBusqueda
        RETURN (FOUND())

        Nota: Este ejemplo es sólo una muestra de la utilización del
        operador de alias con una función definida por el usuario. En lugar
        de MiBusqueda() podría utilizar la función DBSEEK().

      Este ejemplo referencia explícitamente variables de campo y de
        memoria con el mismo nombre:

        USE Cliente NEW
        MEMVAR->NomCliente = "Jose Martinez"     // Crea una variable
                                                 // de memoria NomCliente
        LOCATE FOR MEMVAR->NomCliente = FIELD->NomCliente

      Este ejemplo utiliza una expresión como manejador de área de
        trabajo para crear una operación de base de datos independiente del
        área de trabajo:

        cTabla1 := "C:MiFich.dbf"
        cTabla2 := "D:MiFich.dbf"
        USE (cTabla1) NEW
        hArea1 = SELECT()
        USE (cTabla2) NEW
        hArea2 = SELECT()
        Rellenar( hArea1, hArea2 )

        FUNCTION Rellenar( hArea1, hArea2 )
           LOCAL nContador, nGuardar
           nGuardar := SELECT()
           SELECT (hArea1)
           FOR nContador:= 1 TO FCOUNT()
              FIELDPUT(nContador, ( hArea2 )-> ;
                  ( FIELDGET(nContador )))
           NEXT
           SELECT (nGuardar)
           RETURN NIL

 To download this example - click here.

See Also: FIELD FIELDNAME() FIELDPOS() FIELDGET() SELECT