INDEXKEY()
 Devuelve la expresión clave del índice especificado
------------------------------------------------------------------------------
 Sintaxis

     INDEXKEY(<nOrden>) --> cExpClave

 Argumentos

     <nOrden> es la posición del índice en la lista de ficheros índice
     abierta por el último mandato USE...INDEX o SET INDEX TO en el área de
     trabajo actual. Un valor cero especifica el índice activo,
     independientemente de su posición real en la lista.

 Devuelve

     INDEXKEY() devuelve la expresión clave del índice especificado como una
     cadena de caracteres. Si no hay índice correspondiente o no se ha
     abierto ningún fichero de base de datos, INDEXKEY() devuelve una cadena
     nula ("").

 Descripción

     INDEXKEY() es una función de base de datos que determina la expresión
     clave del índice especificado en el área de trabajo actual y la
     devuelve como una cadena de caracteres. Para evaluar la expresión
     clave, especifique INDEXKEY() como una macroexpresión similar a la
     siguiente: &(INDEXKEY(<nOrden>)).

     INDEXKEY() tiene diversas aplicaciones, pero dos en concreto son
     importantes. Con esta función puede obtener un TOTAL de la expresión
     clave del índice activo sin tener que especificar la expresión clave en
     el código fuente. El otro caso tiene lugar en la función de usuario de
     DBEDIT(). Aquí puede ser necesario decidir si actualizar o no la
     pantalla después de que el usuario haya editado un registro.
     Normalmente, sólo es necesario actualizar la pantalla si ha cambiado
     la expresión clave del índice activo en el registro actual. Ambos
     ejemplos se describen más adelante.

     Por defecto, INDEXKEY() actúa en el área de trabajo actualmente
     seleccionada. Puede hacer que actúe en un área de trabajo no
     seleccionada especificándola con una expresión de alias (consulte el
     ejemplo siguiente).

 Ejemplos

      Este ejemplo accede a la expresión clave de los índices
        abiertos en el área de trabajo actual:

        #define ORD_NATURAL        0
        #define ORD_NOMBRE         1
        #define ORD_SERIE          2
        //
        USE Cliente INDEX Nombre, Serie NEW
        SET ORDER TO ORD_SERIE
        ? INDEXKEY(ORD_NOMBRE)       // Resultado: exp índice de nombre
        ? INDEXKEY(ORD_SERIE)        // Resultado: exp índice de serie
        ? INDEXKEY(ORD_NATURAL)      // Resultado: exp índice de serie

      Este ejemplo accede a la expresión clave del índice activo en
        un área de trabajo no seleccionada:

        USE Cliente INDEX Nombre, Serie NEW
        USE Ventas INDEX Vendedor NEW
        ? INDEXKEY(0), Cliente->(INDEXKEY(0))

      Este ejemplo utiliza INDEXKEY() como parte de una expresión
        TOTAL ON de clave. Observe que INDEXKEY() se especifica con una
        macroexpresión para obligar a evaluar la expresión:

        USE Ventas INDEX Vendedor NEW
        TOTAL ON &(INDEXKEY(0)) FIELDS CantidadVentas;
              TO ResumenVentas

      Este ejemplo utiliza INDEXKEY() para determinar si debe
        actualizarse la pantalla de DBEDIT() después de que el usuario haya
        editado el valor de campo actual. Normalmente, es necesario
        actualizar la pantalla DBEDIT() si el usuario cambia un campo que es
        parte de la clave del índice activo. EditarCampo() es una función
        definida por el usuario llamada desde DBEDIT() para editar el campo
        actual si el usuario ha pulsado una tecla de edición.

        #include "Dbedit.ch"
        #define ORD_NATURAL     0
        FUNCTION EditarCampo()
           LOCAL valindice
           // Guarda el valor y expresión clave actual
           valindice = &(INDEXKEY(ORD_NATURAL))
           .
           . <código para obtener el valor de campo actual>
           .
           // Actualizar la pantalla si ha cambiado el
           // valor clave
           IF valindice != &(INDEXKEY(ORD_NATURAL))
              nPeticion = DE_REFRESH
           ELSE
              nPeticion = DE_CONT
           ENDIF
           RETURN nPeticion

 Ficheros   La biblioteca asociada es CLIPPER.LIB.

 To download this example - click here.

See Also: INDEX INDEXEXT() INDEXORD() SET INDEX SET ORDER