INDEXKEY()
 Retorna a expressao chave de um índice especificado
------------------------------------------------------------------------------

 Sintaxe

     INDEXKEY(<nOrdem>) --> cExpChave

 Argumentos

     <nOrdem> é a posiçao ordinal do índice na lista de arquivos de
     índice abertos pelo último comando USE...INDEX ou SET INDEX TO na área
     de trabalho corrente.  Um valor zero especifica o índice controlador,
     sem importar sua posiçao real na lista.

 Retorno

     INDEXKEY() retorna a expressao chave do índice especificado na forma de
     uma cadeia de caracteres.  Caso nao haja um índice correspondente,
     INDEXKEY() retorna uma cadeia de caracteres nula ("").

 Descriçao

     INDEXKEY() é uma funçao de tratamento de banco de dados que determina a
     expressao chave de um índice especificado na área de trabalho corrente,
     e o retorna na forma de uma cadeia de caracteres.  Para avaliar a
     expressao chave, especifique INDEXKEY() como uma expressao macro desta
     forma: &(INDEXKEY(<nOrdem>)).

     INDEXKEY() tem uma série de aplicaçoes, mas há dois casos específicos
     que vale lembrar.  Utilizando INDEXKEY(), você pode TOTALizar na
     expressao chave do índice controlador sem ter que especificar a
     expressao chave no código fonte.  O outro caso é dentro de uma funçao
     de usuário de DBEDIT().  Aqui você pode querer determinar se a tela
     será atualizada ou nao após o usuário ter editado um registro.
     Geralmente, é necessário apenas atualizar a tela caso a expressao chave
     do índice controlador tenha mudado para o registro corrente.  Ambos os
     exemplos estao ilustrados abaixo.

     O padrao é que a funçao INDEXKEY() opere na área de trabalho
     correntemente selecionada.  Pode-se fazê-la operar em uma área de
     trabalho nao selecionada se esta for especificada em uma expressao
     alias (veja o exemplo abaixo).

 Exemplos

       Este exemplo demonstra como acessar a expressao chave de
        índices abertos na área de trabalho corrente:

        #define ORD_NATURAL  0
        #define ORD_NAME     1
        #define ORD_SERIAL   2
        //
        USE Customer INDEX Name, Serial NEW
        SET ORDER TO ORD_SERIAL
        ? INDEXKEY(ORD_NAME)                  // Resulta: Name
        ? INDEXKEY(ORD_SERIAL)                // Resulta: Serial
        ? INDEXKEY(ORD_NATURAL)               // Resulta: Serial

       Este exemplo ilustra como acessar a expressao chave do índice
        controlador em uma área de trabalho nao selecionada:

        USE Customer INDEX Name, Serial NEW
        USE Sales INDEX Salesman NEW
        ? INDEXKEY(0), Customer->(INDEXKEY(0))

       Este exemplo ilustra a utilizaçao de INDEXKEY() como parte de
        uma expressao chave TOTAL ON.  Observe que INDEXKEY() é utilizada
        através de uma expressao macro para forçar a avaliaçao da expressao:

        USE Sales INDEX Salesman NEW
        TOTAL ON &(INDEXKEY(0)) FIELDS SaleAmount TO SalesSummary

       Este exemplo demonstra como INDEXKEY() pode ser utilizada
        para determinar se a tela DBEDIT() deve ser atualizada após o
        usuário ter editado o valor do campo corrente.  Geralmente, é
        necessário atualizar a tela DBEDIT() caso o usuário altere um campo
        que seja parte da chave do índice controlador.  FieldEdit() é uma
        funçao definida pelo usuário que pode ser chamada de uma funçao de
        usuário DBEDIT() para editar o campo corrente se o usuário
        pressionou uma tecla de ediçao:

        #include "Dbedit.ch"
        #define ORD_NATURAL  0
        //
        FUNCTION FieldEdit()
           LOCAL indexVal
           // Grava valor e expressao chave corrente
           indexVal = &(INDEXKEY(ORD_NATURAL))
           .
           .    <codigo para obter o  valor de campo corrente>
           .
           // Reescreve tela se valor chave foi alterado
           IF indexVal != &(INDEXKEY(ORD_NATURAL))
              nRequest = DE_REFRESH
           ELSE
              nRequest = DE_CONT
           ENDIF
           RETURN nRequest

 Arquivos:  Biblioteca CLIPPER.LIB.
 To download this example - click here.

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