Página 2 de 2

Enviado: 24 Abr 2007 12:20
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

Enviado: 24 Abr 2007 12:40
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

Enviado: 24 Abr 2007 12:47
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.

Enviado: 24 Abr 2007 15:06
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

Enviado: 24 Abr 2007 15:40
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

Enviado: 24 Abr 2007 15:46
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