[firebase-br] Dúvida com transação x refresh

Paulo Portella pportellaa.firebase em gmail.com
Qui Abr 14 13:24:35 -03 2011


Então aqui estou vendo que você vai ter dois processos.
1o.) envio do PDV para o Servidor
2o.) Leitura desses arquivos PELO servidor.

Sugestão -> salve o conteudo da Venda em arquivo (TXT ou XML, o 
ClientDataSet exporta nativamente para o XML e em tres formatos). Ou 
seja, o seu PDV faz um SELECT de tudo que ainda não foi enviado (melhor 
do que ficar percorrendo uma tabela do inicio ao fim) e então exporta 
individualmente arquivo por arquivo significando venda-por-venda. 
Pronto, você já exportou para um diretório qualquer.

Agora o seu Servidor ficará "observando" aquele diretório de tempos em 
tempos, e toda vez que "pintou" um arquivo lá, ele então abre o seu 
conteúdo, transfere para a base local e "move" o arquivo lido para uma 
outra pasta de ARQUIVOS_LIDOS.

Do jeito que você mostrou, acho ficará mais demorado, pois todo o 
sistema possui um Delay para perguntar -> Servidor? está online? sim? 
então lá vaiiiiii, não? puxa, tem certeza? vou esperar 3 segundos 
tá?..1....2....3... Servidor? voltou a ficar online? não? então tá, vou 
continuar vendendo aqui e na proxima finalização perguntarei novamente 
pra você... Tchau.!!!!

Desculpe a brincadeira, mas eu não consigo resistir....Rsssss

Vida de americano é assim: iPhone, iPod, iPad, iMac….
Já a de brasileiro é assim:IPTU, IPVA, ICMS, IPI etc


Em 14/04/2011 13:04, Magno System escreveu:
> Não tem como. Eu apenas simplifiquei o processo para exemplificar. Na 
> realidade é uma rotina de PDV off-line. Eu tenho que verificar quantas 
> vendas tem para descarregar no servidor abrir um loop para correr cada 
> código de venda, e cada venda navegada dentro deste loop exportar a 
> tabela de caixa, tabela de estoque, tabela parcelas e outras mais que 
> pertence a esta venda. Uma vez exportada para o servidor eu apago a do 
> banco local. Estou usando um COMMIT de duas fases para garantir a 
> integridade. Cada venda que é descarregada no servidor e apagada no 
> banco local é uma transação.
>
> Estive pesquisando e acho que vou usar a transação CONCURRENCY 
> (REPEATABLE READ) na query do loop.
>
>
> ----- Original Message ----- From: "Forrest®" <fernando.bg em gmail.com>
> To: <lista em firebase.com.br>
> Sent: Thursday, April 14, 2011 12:35 PM
> Subject: Re: [firebase-br] Dúvida com transação x refresh
>
>
> Em 14/04/2011 12:12, Magno System escreveu:
>> Obrigado Paulo, mas acho que não expliquei direito.
>>
>> Vou colocar o procedimento:
>>
>> Query1 = SELECT CODIGOVENDA FROM VENDAS WHERE VENDA > :VENDA;
>>
>> While Query1.eof = false do
>> Begin
>> QueryOutroBanco = INSERT INTO VENDAS... (Insere no outro banco a o 
>> registro atual da query1)
>> QueryDesteBanco = DELETE FROM VENDAS (Deleta o registro atual da query1)
>> Query1.next;
>> end;
>>
>> Note que são 3 querys. Uma para o loop (Query1), uma para inserção em 
>> outro banco (QueryOutroBanco) e outro para deleção no meu banco 
>> (QueryDesteBanco)
>> Deste modo, preciso assegurar que o IBO não faça nenhum REFRESH em 
>> Query1 para que as deleções feitas por QueryOutroBanco não interfiram 
>> no loop.
>
> Boa tarde Magno
>
> Não é muito melhor fazer dessa forma ???
>
>
> Query1 = SELECT CODIGOVENDA FROM VENDAS WHERE VENDA > :VENDA;
>
> While Query1.eof = false do
> Begin
> QueryOutroBanco = INSERT INTO VENDAS... (Insere no outro banco a o 
> registro atual da query1)
> Query1.next;
> end;
>
> Query1 = DELETE FROM VENDAS WHERE VENDA > :VENDA
>
> Se entendi bem o que você quer terá o mesmo efeito com menos 
> componentes e menos códigos.
>
> T++++++++++++++
>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use: 
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa




Mais detalhes sobre a lista de discussão lista