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