como fazer a atualização da Rede Clipper

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

como fazer a atualização da Rede Clipper

Mensagem por victorale07 »

Oi:

Eu tenho sistema em rede com 5 terminais, entrando em uma fatura com vários registros em um terminal, como a atualização do armazenamento sobre os outros terminais .-

Como fazer a bebida da factura é automática, sem ter que fechar e abrir o Bill dbf
nos outros terminais.

O que é certo?

Código: Selecionar todos

select a
Archivo...
flock()
select b
Archivo...
flock()

select a
do while...1 de 10 
   append blank
   replace....
   replace....
   nreg:=nreg+1
enddo
a->dbcommit()
a->dbunlock()

select b
append blank
replace...
b->dbcommit()
b->dbunlock()


********************

Select a
Archivo...
flock()
Select b
flock()
......
Select a
do while...1 de 10 
   append blank
   replace....
   replace....
   nreg:=nreg+1
   a->dbcommit()
enddo
a->dbunlock()

select b
append blank
replace.....
b->dbcommit()
b->dbunlock()

********************

Select a
Archivo...
Flock()
Select b
Archivo
Flock()
......
Select a
do while...1 de 10 
   append blank
   replace....
   replace....
   nreg:=nreg+1
enddo

select b
append blank
replace......
dbcommitall()
dbunlockall()
u otra alternativa


gracias.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: como fazer a atualização da Rede Clipper

Mensagem por alxsts »

Saudações a todos!

Bienvenido Victor! Saludos!

Não ficou muito clara a tua dúvida.

Queres atualizar um arquivo em ambiente de rede.
Para fazer isto, normalmente não é necessário bloquear o arquivo inteiro (FLock()). Se fizeres isso, os outros usuários não terão acesso ao mesmo. Abra o arquivo como compartilhado ( USE Arquivo Shared New Alias Cliente ). Quando o Clipper executa um Append Blank ou DBAppend(), o registro incluido fica bloqueado automaticamente. Depois de inserir os valores desejados para cada campo, execute um Unlock ou DBUnlock().

Se precisar atualizar um registro que já existe, em ambiente de rede, após identificar o registro desejado ( If DBSeek( xKey ) ), é necessário bloquea-lo (RLock()). Depois de atualizar os campos desejados (Replace <campo> With <valor> ou <nome-de-campo := <NovoValor>), aplique o DBUnlock().

// ------------------------------------------

(by Google translator y yo:)

No es mui clara su duda.

?Desea actualizar un archivo en la red?
Para ello, normalmente no es necesario bloquear el archivo entero (FLock ()). Si usted hace esto, otros usuarios no tendrán acceso a elle. Abra el archivo como compartido (USE Arquivo Shared New Alias Cliente ). Cuando el Clipper ejecutar un Append o DBAppend (), el registro se incluye automáticamente bloqueado. Después de introducir los valores deseados para cada campo, realice un DBUnlock o Unlock ().

Si necesitas actualizar un registro que ya existe en red, después de identificar el registro que desee ( If DBSeek( xKey )), es necesario bloquear el registro encuentrado (RLock ()). Después de actualizar los campos que desee (Replace <campo> With <valor> o <nome-de-campo := <NovoValor>), se aplica DBUnlock ().

// ------------------------------------------
[]´s
Alexandre Santos (AlxSts)
victorale07
Usuário Nível 2
Usuário Nível 2
Mensagens: 67
Registrado em: 20 Ago 2009 19:55
Localização: chile

Re: como fazer a atualização da Rede Clipper

Mensagem por victorale07 »

obrigado por responder

Minha pergunta também é sobre as instruções, DbCommit () e dbcommitall (). Se necessário, use e cumpre a função de atualização de rede para os outros terminais .- exemplos acima descritas, que seria correto.

dar nenhum exemplo em contrário .-

obrigado.
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Re: como fazer a atualização da Rede Clipper

Mensagem por alxsts »

Saudações!

Depois de atualizar um arquivo, é sempre interessante aplicar um DBCommit() para que o registro alterado se torne visível por outros terminais. O DBCommitAll() executa um DBCommit() em todos os arquivos abertos. Se usado com muita frequencia, pode degradar a performance do aplicativo.

Na instalação padrão do Clipper 5.xx, existem bons exemplos de abertura e gravação de arquivos em ambiente de rede. Estão na pasta C:\Clipper5|Source\Sample. Não me lembro em qual arquivo .PRG está, mas procure as funções NetUse(), AddRec() e RecLock().
[]´s
Alexandre Santos (AlxSts)
Responder