Jump to content
Fivewin Brasil

Replicação de arquivos na rede local


rmarra

Recommended Posts

Olá pessoal, gostaria de pedir uma dica.

Preciso colocar meu sistema para caso o servidor da rede local caia, os terminais continuem fazendo venda e quando a rede voltar, atualizar as informações no servidor.

Parece-me que existe uma rotina usando FTP local para replicar as informações dando segurança, evitando uma possível copia de arquivos de uma estação para outra ocasionando sérios transtornos.

OBS:

1- O banco de dados ainda é DBF/CDX.

2- Este sistema é em FW 16 Bits

Ficarei muito grato com alguma ajuda.

Rondinelli - Itaocara-RJ

Clipper 5.3b, Fivewin 2.6, Blinker 7, WorkShop

Link to comment
Share on other sites

Olá pessoal, gostaria de pedir uma dica.

Preciso colocar meu sistema para caso o servidor da rede local caia, os terminais continuem fazendo venda e quando a rede voltar, atualizar as informações no servidor.

Parece-me que existe uma rotina usando FTP local para replicar as informações dando segurança, evitando uma possível copia de arquivos de uma estação para outra ocasionando sérios transtornos.

OBS:

1- O banco de dados ainda é DBF/CDX.

2- Este sistema é em FW 16 Bits

Ficarei muito grato com alguma ajuda.

Rondinelli - Itaocara-RJ

Clipper 5.3b, Fivewin 2.6, Blinker 7, WorkShop

Link to comment
Share on other sites

Entendi, mais ou menos, pode dar mais detalhes?

usando um TIMER, E CHECANDO o Se o Servidor esta OK, com o comando:

WNETADDCON(),

Será que não é o caminho? Dei muro...

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

Kapi, deveria ser assim:

- Fazendo venda normal pela rede atualizando no banco de dados do servidor.

- A rede caiu, mas as estações devem continuar vendendo e imprimindo a venda localmente.

- Rede voltou, atualizar os dados das vendas locais das estações no banco de dados do servidor

Rondinelli - Itaocara-RJ

Clipper 5.3b, Fivewin 2.6, Blinker 7, WorkShop

Link to comment
Share on other sites

ENTÃO, ACHO QUE O COMANDO ACIMA RESOLVE.

CAIU A REDE, TENTAS ABRIR COM O COMANDO ACIMA, RETORNOU .F., VAI PARA LOCAL.(BANCOS DEVEM ESTAR NO LOCAL), TENTA CONECTAR A REDE, CONECTOU, VOLTA PARA O SERVIDOR E ATUALIZA(), OS BANCOS DO SERVIDOR COM OS DADOS DO TERMINAL.

TÔ INDO BEM? Aceito criticas para esta logica.

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

citação:

Kapi, como é a sintaxe de uso deste comando WNETADDCON()?

Rondinelli - Itaocara-RJ

Clipper 5.3b, Fivewin 2.6, Blinker 7, WorkShop


id=quote>id=quote>

UUUIIII, adoro esse nome KAPI.... KKKKKKK

+- Assim, infelizmente nao posso postar a rotina completa segredo de estado... kkkkkkkkkkkkkkk


MSGRUN( "Desconectando o Servidor de Arquivos...", ;

"Aguarde Um Momento, Por Favor! ", ;

{ || DESCONECTA_SERVIDOR() } )

MSGRUN( "Conectando ao Servidor de Arquivos... ", ;

"Aguarde Um Momento, Por Favor! ", ;

{ || CONECTA_SERVIDOR() } )

//-> Para Caso NÆo Consiga Se Conectar a Primeira Vez, Tenta de Novo

IF FILE( "Z:\SISTEMAS\VENDAS\ESTOQUE.DBF" )

//-> Passa Batido... Conectou

ELSEIF !FILE( "Z:\SISTEMAS\VENDAS\ESTOQUE.DBF" )

//-> Tenta Conectar a Rede ao Servidor de Arquivos de Novo

MSGRUN( "Conectando ao Servidor de Arquivos...", ;

"Aguarde Um Momento, Por Favor! ", ;

{ || CONECTA_SERVIDOR() } )

MsgInfo( OemToAnsi( "NÆo Consegui Conectar a REDE " ) + CRLF + ;

OemToAnsi( "na Primeira Vez, Tecle " ) + CRLF + ;

OemToAnsi( "Para Tentar Mais Uma Vez. " ), ;

OemToAnsi( "Erro ao Conectar a REDE! " ) )

ENDIF

//-> Se NÆo Conseguiu Conectar Mesmo... Ap¢s duas tentativas...

IF !FILE( "Z:\SISTEMAS\VENDAS\ESTOQUE.DBF" )

MsgInfo( OemToAnsi( "Aten‡Æo, Servidor de Arquivos " ) + CRLF + ;

OemToAnsi( "Desligado, Por Favor Ligue o " ) + CRLF + ;

OemToAnsi( "Computador Principal(Servidor) " ) + CRLF + ;

OemToAnsi( "e Tente Novamente! ERRO! " ), ;

OemToAnsi( "Erro ao Conectar Com o Servidor" ) )

RETURN NIL

ENDIF

BEEP(3)

SndPlaySound(".\Init.Wav" )

//-> Conecta a Rede

STATIC FUNCTION CONECTA_SERVIDOR()

//->Memory(-1)

/*limpia arreglo y llama al colecor de basura de xharbour*/

hb_gcAll()

WNetAddCon( "\\MICRO24",,"Z:" )

SysWait(1)

RETURN NIL

//-> Desconecta a Rede

STATIC FUNCTION DESCONECTA_SERVIDOR()

//->Memory(-1)

/*limpia arreglo y llama al colecor de basura de xharbour*/

hb_gcAll()

wNetDelConnection( "Z:", .T. )

SysWait(1)

RETURN NIL

// ---------------------- FIM DO PROGRAMA -----------------------------------//

id=code>id=code>

João Santos - São Paulo.

kmt_karinha@pop.com.br

kapiaba@brfree.com.br

Fone: (11) 3106-2832

FWH 2.7 - xHARBOUR 0.99.61 - WorkShop.Exe

Link to comment
Share on other sites

cara, isso vai e dar um mega trabalho...

primeiramente, vc terá que colocar um campo adicional em todos os dbfs tipo L_ATU(L) onde será setato .t. se estiver no dbf do servidor e no local; ao gravar (replaces), terá que gravar no local e no servidor. se nao consegiur grtavar no servidor ("fora do ar"), seta .f. enquantoi isso o timer fica monitorando quando po servidor entra no ar novamente. ai, se a funcao que monitora o servidor indicar que esta no ar, o sistema espera a tansacao em curso(a venda por ex.) acabar e pede para o operador aguardar enquanto sincroniza os arquivos locais com o do servidor; todo e qualquer registro que estiver com L_ATU=.F., não está sincronizado com o servidor; a medida que for lendo e gravando um-a-um, vai setando o L_ATU=.t.;

Clipper 5.3; Fw195; Link

Link to comment
Share on other sites

so complementando... uma variavel global deverá informar sempre que dbf esta sendo usado, o do servidor ou o local

essa variavel devera ser alterada somente pelo monitor do servidor; se, ao dar replace essa variavel indicar que esta no modo local, significa que o servidor tá off; outra coisa, gravar a mesma coisa duas vezes em dbfs sepatados deve almewntar teu codigo... sugiro uma funcao a ser usada no lugar do replace, sei la tipo my_replace("dbf->campo" , variavel)

na funcao my_replace, captura o nome do dbf contido na expressao substr(nome_campo,1,at('->',nome_campo)-1) e faz o resto do trabalho; tipo:

sele \\servidor

repl....

commit

sele local

repl...

commit

return(.t.)

acho que é por ai...

espero ter ajudado, e peçp desculpas se falei besteira hehehehe

Clipper 5.3; Fw195; Link

Link to comment
Share on other sites

Obrigado fluna, acho que é algo por aí mesmo. Sei que vai dar trabalho, mas com o PAF temos que ter a opção do servidor cair continuar fazendo venda localmente.

Um abraço!

Rondinelli - Itaocara-RJ

Clipper 5.3b, Fivewin 2.6, Blinker 7, WorkShop

Link to comment
Share on other sites

olá, uma opnião:

trabalhe com a lógica contrária, ou seja, atualize primeiro um BD temporário na estação local e imediatamente após esta atualização na estação local que está fazendo a venda vc tenta atualizar no servidor, se conseguir, marque uma flag como ENVIADO na sua transação, se não conseguir, marque como NÃO ENVIADO

faça uma rotina de uma forma que após cada transação realizada na estação de vendas sejam lidas as transações que estão como NÃO ENVIADO e tente enviar para o servior

as transações não enviadas ficarão em uma fila de transações NÃO ENVIADAS por estação de venda, que poderão ser atualizadas quando o servidor voltar

utilize um timer para varrer o BD temporário de tempo em tempo para verificar se há transações não enviadas e se consegue atualizar

abraço

Yury Marcelino Al

Viman Sistemas

vimansca@vimansca.com.br

yury030575@yahoo.com.br (msn)

skype: yury.marcelino.al

Leme / SP

FW 2.6 / [x]Harbour 99.50 / WS / xDev 0.65 / @say

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...