Clipper On Line • Ver Tópico - DbAppend falha

DbAppend falha

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

DbAppend falha

Mensagempor asimoes » 18 Jun 2017 16:36

Quintas,

A variável nTentativas no seu ponto de vista ficará contando infinitamente ? ao meu ver tem que ter uma saída, eu pensei em abortar a aplicação depois de 20 tentativas
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor janio » 18 Jun 2017 17:48

aSimoes,

Ficou show sua função. Muito boa.

Com relação a Numero de Tentativas, eu tbm sou da mesma opinião do Quintas: limitar isso eh uma péssima idéia.

Imagina que numa rotina vc vai gravar em tabelas:

Tabela1 passou ok

Tabela2 passou ok

Tabela3 o DbAppend falhou

Se depois de x tentativas vc abortar a gravação na tabela3, a consistência do seu banco de dados vai pro beleléu. E aí? vai desfazer as gravações JA REALIZADAS nas tabelas 1 e 2?

É como o Quintas falou, até da pra controlar isso, mas haja toneladas de códigos para cada rotina.

Janio

PS: Mais um dia sem erro no cliente hehehe. Ou resolveu, ou a rotina que me manda email de erro pifou kkkk
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

DbAppend falha

Mensagempor janio » 18 Jun 2017 17:57

Bom,

Ha duas saídas para o problema acima:

1-) Se a rotina de gravação é em apenas uma tabela, pode-se após X tentativas perguntar ao cidadão que ta na frente do computador se ele deseja abortar a operação;

2-) Se a rotina de gravação é EM VÁRIAS tabelas, fica difícil perguntar ao usuário pra abortar em alguma tabela, quando ja foram gravados dados em outras. No entanto, se vc usar algum BANCO DE DADOS RELACIONAL e usar TRANSAÇÕES... em falhando a gravação em alguma tabela, depois de x tentativas vc pode perguntar se deseja abortar. Se a resposta for SIM vc manda um ROLLBACK que o banco se encarrega de DESFAZER o que tinha sido feito pra cima
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

DbAppend falha

Mensagempor asimoes » 18 Jun 2017 18:02

Janio,

Como diria o ditado "se está bom assim porque mudar" só uma observação do que você disse:

Tabela1 passou ok

Tabela2 passou ok

Tabela3 o DbAppend falhou

O que acontece na Tabela3 depois de 1000000 de tentativas, abort ou retry ?, ou o usuário vai se cansar da mensagem, sabe como é usuário né, acha que a máquina travou e taca o dedão no botão reset ou liga/desliga, estou sendo bem pessimista, mas se tratando de rede se uma coisa pode dar erro, vai dar erro, e quais as consequências? kkkk

E outra se o erro é em uma tabela filha ? vai ter registro órfão ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor asimoes » 18 Jun 2017 18:07

Outra situação:

Tabela filha é um sequencial de número de pedido, gravou a ordem 1, 2 a 3 falhou e a aplicação espera o 3 ou pula o 3 ?, são tantas emoções que deixa o programador careca, é por isso que não tenho mais cabelo.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor JoséQuintas » 18 Jun 2017 18:19

Até mesmo a opção de "não infinito" não uso mais.
Mas dá pra usar, por exemplo na alteração/exclusão.
IF ! RecLock( 10 )
   RETURN
ENDIF


Mas em qual situação o usuário esperaria infinitamente?

Se estiver tudo ok, vai ok.
Se estiver com problema... erro é erro, melhor nem ter o trabalho de tentar controlar.... rs

Imagine a rotina já apresentada...
Começou a fazer dá erro... começou a desfazer dá erro.... deu no mesmo.... rs

Por isso acabei removendo a opção de intervalo de tempo.
Acabei acrescentando o skip 0, porque pode ser que depois de bloquear precisa atualizar o buffer com algo alterado por outra estação.
Se estava bloqueado... pode ser que aquilo foi excluído.

De qualquer forma, vai da lógica do conjunto, e não apenas da rotina em si.
Pode ser que sirva pra um padrão de fontes, mas não pra outro.
Se existisse um padrão considerado certo, não precisaria programador, porque seria sempre igual e estaria pronto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

DbAppend falha

Mensagempor asimoes » 18 Jun 2017 18:23

Quintas

Mas em qual situação o usuário esperaria infinitamente?


Só o Janio para responder essa, enfim foi ele que criou o monstro, kkkkk
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor janio » 18 Jun 2017 18:58

kkkkkkkkkkkkkkk

Erro é erro, nenao Quintas kkkkk

Ok, vamos dizer que esperar eternamente não seja o correto rsrsrs. Mas dar opcao pro usuario abortar depois de 20 mínguas tentativas tbm não da ne.

O que me incomodava nesse erro, e isso foi inédito pra mim, foi qndo ele dava no caixa problematico, alardeava em todos os outros em cadeia. O supermercado do cliente PAROU num dia pra vcs terem uma idéia, e um supermercado parado (nem que seja por 5 minutos), vcs nao sabem a dor de cabeça que eh kk (cliente ligou pra mim umas 100x em 5 minutos kkkk)

Ainda continua falhando o DbAppend nesse caixa? Possivelmente sim. Possivelmente ele fique la tentando em milhares de vez. MAS PELO MENOS ESSE PROBLEMA NÃO ESTA MAIS 'ATRAPALHANDO' OS OUTROS CAIXAS e o super do homi não para mais rsrsrs
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

DbAppend falha

Mensagempor asimoes » 18 Jun 2017 19:09

Janio,

Só uma coisa, o cliente desse supermercado com 2 carrinhos cheios até a boca no meio da transação passando o produto no leitor e de repente o famigerado dbappend falha, isso já aconteceu comigo em um supermercado aqui do rio de janeiro, o que você faz ? espera ? larga tudo e vai embora ? ou começa quebrar tudo baseado no filme "Um dia de Fúria" kkkkk
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor janio » 18 Jun 2017 19:20

kkkkkkkkkkkkkk

Se falhar no caixa problemático vai tentar, tentar, tentar... até o usuário ficar p*to kkkk

Se as outras estações falharem por causa da problemática... tenta uma vez, duas, três e acredito que antes das 10 da certo e ele continua rsrs.

O meu erro era pq eu tentava UMA VEZ e pronto. Deu certo, deu. Não deu, lascou-se.

Qndo dava erro e a gravação ficava pela metade, eu tinha ERRO de SEQUENCIA do CCF das impressoras fiscais. Somente no dia 10 desse mes (dia do famigerado aperreio), está faltando 3 cupons fiscais. Ou seja, os cupons foram emitidos, estão registrados na impressora fiscal, mas para o sistema eles NAO EXISTEM.

Depois da atualização com essas funções, pergunta aí se ainda houve quebra nesse sequencial: NÃO HOUVE!

Acho q ta funcionando rsrsrsrs

Janio

PS: O cliente emite em média 52.000 cupons fiscais mensais. Eh um numero considerável
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

DbAppend falha

Mensagempor asimoes » 18 Jun 2017 19:33

Janio,

Eu pensaria em uma solução de dbf temporário por caixa e no final, transportar tudo para base real, é só uma sugestão, sem concorrência de uso no mesmo dbf, menos problemas de lock, não é infalível mas ficaria mais performático.

O caixa tem sangria que eu saiba, nesse momento poderia transportar tudo para a base real e zerar o dbf temporário, sei lá to viajando, eu só não quero ir nesse supermercado dai, vou quebrar tudo e ainda vou chamar o programador pra pagar a conta, kkkkk
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor Claudio Soto » 18 Jun 2017 22:29

asimoes escreveu:Janio,

Eu pensaria em uma solução de dbf temporário por caixa e no final, transportar tudo para base real, é só uma sugestão, sem concorrência de uso no mesmo dbf, menos problemas de lock, não é infalível mas ficaria mais performático.

O caixa tem sangria que eu saiba, nesse momento poderia transportar tudo para a base real e zerar o dbf temporário, sei lá to viajando, eu só não quero ir nesse supermercado dai, vou quebrar tudo e ainda vou chamar o programador pra pagar a conta, kkkkk


Yo sé muy poco sobre la administración de base de datos, por lo tanto lo que voy a decir es pura especulación teórica, la idea Alexandre es interesante, si el problema es de concurrencia y se debe tener una DB centralizada en tiempo real por ej. para consulta del gerente, es tentadora la idea de usar una DB central y una local por máquina. Se almacenan la info en las 2 DB a la vez, luego cada cierto intervalo de tiempo se compara si todos los registros de la local están en la central, si falta alguno se copia a la central, luego se borra la local o se deja como un backup de esa máquina. Otra opción es gravar en la local sólo si falla el registro en la central y después se crea un thread aparte que se va encargar de copiar los reg de la local a la central y a medida que va copiando con éxito un registro lo va deletando de la local. Como ya dije esto es pura especulación teórica.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes

DbAppend falha

Mensagempor asimoes » 19 Jun 2017 08:57

Essa ideia de temporários pode ser útil, e na máquina local onde está o temporário pode até ser mapeada para rede, dessa forma a aplicação que gerencia todo o sistema pode ter acesso a esse temporário das estações.
Fazendo o papel de carga das estações para o sistema principal no servidor ou vice-versa, pode ser também até uma aplicação monitor que faça a carga a cada x tempo.

Imaginando o cenário:

Estações com a pasta \CAIXA estação com seu dbf correspondente:

cx001.dbf cx002.dbf cd003.dbf

No servidor uma aplicação systray para ler o dbf de cada caixa a cada x minutos, condensando os registros na base real.

É só uma ideia, tem que ver se compensa o esforço.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

DbAppend falha

Mensagempor fladimir » 19 Jun 2017 09:22

Só tive paz depois q fiz tudo em temporário e no final grava nas tabelas reais... se cair a energia ou algo do tipo ao entrar verifica q tem o temporário e recupera.
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar de usuário

fladimir
Colaborador

Colaborador
 
Mensagens: 2434
Data de registro: 15 Nov 2006 19:21
Curtiu: 28 vezes
Mens.Curtidas: 157 vezes

DbAppend falha

Mensagempor rubens » 19 Jun 2017 13:39

Também só resolvi meu problema com uma tabela temporaria de itens... Deu BO e a maquina foi reiniciada ou travou o sistema por algum motivo qdo entra de novo pelo menos os itens que já foram lançados estão lá armazenados...
Agora o preocupante mesmo é as rotinas "fortemente acopladas". Sinceramente não sei o que fazer... Eu tenho por hábito enviar a NFCe primeiro e se não conseguir enviar, não tiver cstat=100 faz o que manda em contigencia e continua o processamento ou não termina a venda. (eu mando em contigencia e faço os outros procedimentos), daí tem gravar a venda, baixa no estoque, lançamento no caixa/contas a receber/cheque, voltar apagar o orcamentos, apagar os itens do orçamentos e por aí vai..
Meus problemas foram praticamente resolvidos com a troca de ntx por cdx. Não vi nas postagens qual o Leandro tá usando.
Outra coisa só para mencionar, tive um problema enorme com um alias "ORC" não sei porque... tinha uma rotina que ao fechar o caixa fechava todos os dbfs com dbcommitall() e dbcloseall() e abria o arquivo de orcamentos "ORC" em modo exclusivo e dava um pack. Bom a ideia era essa, só que por algum motivo o tal do "ORC" não abria nem com reza, sempre dava erro de que o Alias já existia.
Recentemente um cliente meu de outra cidade me reclamava que fazia venda, gravava e imprimia, mas não registrava no caixa... Fiz de tudo para resolver isso mas não consegui reproduzir o erro em nenhum outro cliente. Por algum motivo trocaram de funcionária e a nova funcionária me ligou pedindo para dar uma olhada na máquina por que achava que tava com vírus, porque do nada o sistema congelava e só funcionava quando resetava. Pronto resolvido o problema dos dados não gravados no caixa.. em algum momento o Servidor dela congelava e justamente na rotina de gravação... se me lembro foi comentado tambem que as duas máquinas que rodavam o programa abriam e faziam lançamentos no caixa... tudo foi encaixando né... Máquina com hd com defeito que congelava. E caixa travado pelo outro terminal. Bom cada caso é um caso...

Rubens
"Eu e minha casa servimos ao Senhor e você ???"
Avatar de usuário

rubens
Colaborador

Colaborador
 
Mensagens: 1518
Data de registro: 16 Ago 2003 09:05
Cidade/Estado: Nova Xavantina - MT
Curtiu: 77 vezes
Mens.Curtidas: 104 vezes

Anterior Próximo



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro