Página 1 de 1

Ideia para pegar o q fez antes do Erro

Enviado: 23 Jun 2016 12:38
por fladimir
Olá pessoal...

Seguinte, hj se ocorre um erro no sistema recebo um e-mail com descricao do erro, copia da tela, etc etc q temos abundamentemente isso no fórum...

Minha questão é a seguinte... tenho percebido q alguns tipos de erros são decorrentes de alguma ação anterior, explico...

O cliente foi gerar um relatório X e nesse relatório fechou uma tabela Y q ao sair do relatório e ir em outro lugar no sistema q precise da tabela aberta da o erro...

Isso foi só um exemplo dá pra contornar isso na rotina de erro ou nas demais rotinas MAS esse não é o ponto q quero chegar... o ponto é o seguinte:

Partindo do exemplo acima eu gostaria de bolar uma fora pra q no relatório de erro viesse tipo um histórico do q fez antes do local em q ocorreu o erro...

Exemplo...

Código: Selecionar todos

...... conteudo do relatório de erro padrão...

---------------------------------------------------------- Descricao das ultimas 10 ações do usuario... 

08. RELATORIO DE HISTORICO DE COMPRAS --> ROTINA Q DEU O ERRO
07. VENDEU PARA O CLIENTE FULANO
06. CADASTROU O CLIENTE FULANO
05. GEROU ETIQUETA DE PRODUTOS W
04. CONSULTOU PRODUTOS Z
03. CADASTROU 01 PRODUTO X
02. ALTEROU 01 PRODUTO Y
01. ENTROU NA MANUTENCAO DE PRODUTOS
O q gostaria:

Como se fosse um Call Stack do debug q mostra as rotinas q foram acessadas no momento do erro MAS um pouco diferente, não quero o Call Stack da sequencia do erro, mas sim saber as ações anteriores ao erro pq, não sei os colegas, mas tem alguns erros q entendo o q significa mas gostaria de simular para poder entender o processo e ver a melhor solução.

Dúvidas:

Como fazer isto?
Como pegar exatamente as ações?
Talvez no menu qdo escolher uma rotina gravar em uma tabela? mas se for por ai pra não ficar gravando qualquer coisa...

Ou seja... como pegar exatamente as ações? Alguém tem alguma ideia ou trabalha com isto de alguma maneira q possa orientar?

[]´s

Ideia para pegar o q fez antes do Erro

Enviado: 29 Jun 2016 10:02
por Vlademiro
Tem que gerar um log para que isso funcione.

No log deve ter

Mensagem, Procname(1), ProcLine(1), Data, Hora, Usuário, Nome do computador e Local

Ex:

"BAIXA DE NOTA FISCAL"
procname(1) --> Rotina chamadora (talvez nem precise)
procline(1) --> Linha
Data --> Date()
hora --> Time()
usuário --> cUser
Nome do Computador --> NETNAME( .f. )


Se estiver usando HMG ou qualquer outra lib gráfica creio que o melhor local para gravar seria :

1 ) Na entrada da rotina (Ex: ENTROU NA ROTINA DE BAIXA DE NOTA FISCAL)

2 ) No botão que dispara o evento (Ex: CLICOU NO BOTÃO DE GRAVAR)

Pode usar o DBF para gravar, tipo, cada vez que o usuário entrar no sistema gravar um DBF em uma pasta, por exemplo :

.\eventos\evento20160629_095723_1234.DBF

Quando gerar o erro (no errorsys) você informa o nome do log de evento em uso.

O nome do log de eventos pode ser composto por outras coisas, por exemplo, o nome do usuario , o nome do computador, etc. Para facilitar na hora de achar o local onde partiu o erro.

3 ) Depois criar uma rotina automática para limpar o conteúdo dessa pasta.

Aqui no fórum tem várias outras ideias. Por exemplo, recentemente eu vi um tópico sobre gravação de imagem em DBF. Se vc descobrir como capturar as telas do sistema pode criar um campo memo para gravar as imagens. O DBF não é o mais indicado para isso, mas para arquivar os eventos sairia perfeito.

Ideia para pegar o q fez antes do Erro

Enviado: 29 Jun 2016 18:47
por fladimir
Então Vlademiro realmente tem, mas confesso q fiquei meio confuso e perdido mas acho q é por ai mesmo conforme vc citou eu tinha pensado em colocar nas rotinas qdo entra por exemplo...

Estou analisando ainda...

Obrigado pela atenção.

[]´s

Ideia para pegar o q fez antes do Erro

Enviado: 30 Jun 2016 00:33
por JoséQuintas
Esses fontes tão precisando de revisão.... rs

Se é só pra esse objetivo:
Talvez a cada entrada no aplicativo criar uma ID do uso, somando um a cada entrada.
A partir daí, registrar o log com essa ID.
Ao encerrar o aplicativo, poderia apagar tudo com essa ID.
Quando der erro, tudo que se refere aquela ID vai permanecer no aplicativo.

E pra não encher de registros deletados, também poderia ser um arquivo txt.
Ao encerrar, apagar o arquivo txt daquela ID.
O que sobrar, é do que deu erro.

Ideia para pegar o q fez antes do Erro

Enviado: 30 Jun 2016 00:54
por fladimir
Vlw Quintas... obrigado pela ideia tb...

[]´s