Página 1 de 1

é possivel criar uma funcao de indice

Enviado: 04 Mai 2009 12:33
por juniorcamilo
Amigos , sabemos como usar o comando index (Sintaxe)
Ex: index on CODPRO to iCodpro

mas é possivel criar um indice com uma funcao propria sem usar o comando index ?

Re: é possivel criar uma funcao de indice

Enviado: 04 Mai 2009 13:33
por Maligno
Claro. Era a única forma que eu fazia. Veja um exemplo na minha função de indexação, onde, aliás, é o único local onde eu uso o comando INDEX:

Código: Selecionar todos

static function dbIndex(nGrp,nDBF)
local nStep
local nIKey
local cIKey
*
IProgress(1,_DBF_COMMENT,Len(_DBF_IDX_KEY)+1)
nStep := RetMax(1,Int(RecCount()/IProgress(9)))
for nIKey := 1 to Len(_DBF_IDX_KEY)
    cIKey := _DBF_IDX_KEY_DEFINE
    IProgress(2,,nIKey)
    index  on (cIKey)                                               ;
          tag (if(Empty(_DBF_IDX_KEY_ID), TStr(nIKey),              ;
                 SubStr(_DBF_IDX_KEY_ID,At("_",_DBF_IDX_KEY_ID)+1)));
           of (_DBF_IDX_FILEPATH+"\"+_DBF_IDX_FILENAME)             ;
          for !Deleted()                                            ;
         eval IProgress(3) every nStep
next
IProgress(2,,Len(_DBF_IDX_KEY)+1)
index on (FieldName(1)) tag DELETED of (_DBF_IDX_FILEPATH+"\"+_DBF_IDX_FILENAME) for Deleted() eval IProgress(3) every nStep
IProgress(4)
return _kTRUE

Re: é possivel criar uma funcao de indice

Enviado: 04 Mai 2009 17:05
por juniorcamilo
Maligno escreveu:Claro. Era a única forma que eu fazia. Veja um exemplo na minha função de indexação, onde, aliás, é o único local onde eu uso o comando INDEX:
?
Sem usar o comando Index!!

como o comando index cria um indice?

Re: é possivel criar uma funcao de indice

Enviado: 04 Mai 2009 17:16
por Maligno
Pra ver no que se traduz o comando INDEX, apenas leia o PPO do seu fonte. Ou melhor ainda, leia o header que o traduz. :)

Re: é possivel criar uma funcao de indice

Enviado: 12 Mai 2009 13:08
por juniorcamilo
Maligno me explique a seguinte linha
maligno escreveu:index on (FieldName(1)) tag DELETED of (_DBF_IDX_FILEPATH+"\"+_DBF_IDX_FILENAME) for Deleted() eval IProgress(3) every nStep
para que serve o deleded?
Maligno escreveu:Pra ver no que se traduz o comando INDEX, apenas leia o PPO do seu fonte. Ou melhor ainda, leia o header que o traduz. :)
como eu faço isso?

Re: é possivel criar uma funcao de indice

Enviado: 12 Mai 2009 13:12
por Maligno
para que serve o deleded?
Quando apago algum registro, apenas o deixo em branco e marco como "deletado". Quando vou incluir, uso essa chave para encontrar um registro que esteja na condição de "deletado". Facilita o trabalho.
como eu faço isso?
Você precisa compilar seu fonte com o switch /p. Daí você terá um arquivo a mais, com a extensão PPO.