é possivel criar uma funcao de indice

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

é possivel criar uma funcao de indice

Mensagem 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 ?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: é possivel criar uma funcao de indice

Mensagem 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
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Re: é possivel criar uma funcao de indice

Mensagem 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?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: é possivel criar uma funcao de indice

Mensagem 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. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
juniorcamilo
Usuário Nível 3
Usuário Nível 3
Mensagens: 343
Registrado em: 10 Nov 2006 09:12
Localização: Pará

Re: é possivel criar uma funcao de indice

Mensagem 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?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: é possivel criar uma funcao de indice

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder