Problemas com Indices de Datas

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Ah, outra coisa: no caso de ser só UM índice NTX, beleza, só o INDEX basta (porque o índice permanece aberto depois de criado). Mas, quando for MAIS de um, o segundo INDEX fecha o primeiro NTX e fica só ele aberto, e assim por diante. Então, tem que usar o SET INDEX TO, pra abrir todos, certo?

Código: Selecionar todos

USE CLIENTES SHARED 
IF !(FILE("CLINUM.NTX") .and. FILE("CLINOME.NTX))
  INDEX ON STRZERO(CODCLI,5,0) TO CLICOD 
  INDEX ON NOMECLI TO CLINOME
ENDIF
SET INDEX TO CLICOD,CLINOME
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Sim Eolo, o procedimento que você indica e que considero como complemento, está correto. Por isso, indico na minha mensagem anterior para fazer uso de "funções de tratamento" para rede.

Acho que podemos dar alguns exemplos:

http://www.caclipperwebsite.com/howto/topico01.htm

https://pctoledo.org/download/cop ... t&deonde=2

http://robson.fjaunet.com.br/fatec/clip ... pper_2.doc

Há diversas funções disponíveis para fazer o tratamento de arquivo em rede.

Um clip-abraço :)Pos
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Eolo escreveu:]quando for MAIS de um, o segundo INDEX fecha o primeiro NTX e fica só ele aberto, e assim por diante. Então, tem que usar o SET INDEX TO, pra abrir todos, certo?
Eu acho que sempre é bom reforçar chamando o SET INDEX ou DBSETINDEX(), este ultimo acho que mesmo chamando um a um ele não fecha os outros orders. Mas conforme INDEXAR o arquivo, eu também tenho impressão que ele fecha os orders.
bfrodrigo
Usuário Nível 1
Usuário Nível 1
Mensagens: 6
Registrado em: 16 Abr 2007 14:37

Mensagem por bfrodrigo »

Beleza Amigos, acho que ta funcionando corretamente, fiz uns testes e houve quebra de indice, mas não consegui apagar um registro, quando o tentei, deu o seguinte erro: Lock Required. Será que podem me dar mais uma mãozinha !
Se não for abusar de vcs, gostaria de poder enviar esses prgs e dbfs por e-mail para que vcs possam ver se esta correto. Se não for pedir muito. Caso aceitem me digam qual o endereço que mando. Desculpem o abuso e desde mais uma vez agradeço !

Abraço

Rodrigo
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Rodrigo,

Pra deletar um registro em um DBF em rede, vc tem que BLOQUEAR ele antes com o RLOCK() -> quer dizer Record LOCK ou bloqueio de registro. Se você não bloquear, dá o LOCK REQUIRED -> bloqueio requerido.

Essa função RLOCK() retorna .T. se o bloqueio foi bem sucedido e .F. se não. Então:

if RLOCK()=.T.
delete
endi

Eolo
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

É isso aí, Eolo. Mas você Rodrigo, não leu o que eu escreví ??. Muita coisa, né ?. Use o NG.EXE que você vai gostar, ele te ajuda a descobrir esses erros (inclusive tem CLIPPER.NG em portugês). Leia com atenção. Aproveite !.

Não viu aqueles links que passei também, eles te dão exemplos de como utilizar o RLOCK(), FLOCK(), UNLOCK, NETERR()....

:)Pos
Responder