COMO SABER QUAL A LINHA DO CODIGO ESTA DANDO ERRO?

MLALEX 13/08/2012 14:47:29
#407847
Tenho uma aplicação com vários forms rodando simultaneamente, e de uma hora para outra aparece o Erro 13 TypeMismatch. Como localizar esse erro em todo o código??? Em qual linha ele acontece?? Em qual form???
GOODSPEAKERS 13/08/2012 14:52:39
#407848
Coloca um break point no Load do form e vai [Ô]debugando[Ô] com o F8 até achar o erro ......

esse erro tem a caracteristica de parametro errado ...................
MLALEX 13/08/2012 15:34:36
#407852
Em modo autoria o erro não acontece, ou ao menos, não quando procuro por ele. O erro acontece em algum momento que eu não consigo prever. Pensei em colocar na [Ô]cabeça[Ô] de form um [Ô]On Error GoTo...[Ô] mas não sei se esse comando invalidaria os [Ô]On Erros[Ô] que eu tenho dentro de diversas procedurys. Isso iria complicar muito minha situação.
GOODSPEAKERS 13/08/2012 15:41:55
#407853
Olha acredito que não ....

Mais fica complicato te falar onde colocar se é no load ou no inicio de alguma procedure ... pq nem sei quantos forms seu aplicativo vai abrir ou em que botao é clicado quando acontece esse erro.

Mais uma coisa é certa ou coloca [Ô]on error[Ô] ou voce vai ter que achar na [Ô]unha[Ô] isso, não vejo outra saida, a não ser que algum colega aqui te sugira algo.

Abraço
MLALEX 13/08/2012 16:34:05
#407859
Se não tiver um jeito de colocar para todo o Form, vou ter que tirar um final de semana inteiro e colocar em todos as procedures, de todos os forms (são 48 forms com uma média de 120 procedures cada), haja tempo e paciência. Você sabe o código para exibir na mensagem de erro, a linha em que o erro se encontra??
ERIVELTONVGA 13/08/2012 16:53:04
#407861
MLALEX BOA TARDE

Primeiro este erro comecou a dar agora? segundo testou o sistema em outra maquina? terceiro tentou fazer o erro localmente no seu projeto.

Talvez seja pontuação que seu sistema não está aceitando, verifica aí, talvez é um campo numerico que esta recebendo texto ou acentuação, verifique aí.

MARCELO.TREZE 13/08/2012 17:31:43
#407866
colega numere as linhas e use o on error goto

ex:


Private Sub Command1_Click()
On Error GoTo TrataErro

Dim F As Integer

10 For F = 1 To 10
20 MsgBox F
30 If F = 3 Then
40 F = [Ô]Marcelo[Ô] [txt-color=#007100][ô] aqui vai gerar um erro[/txt-color]
50 End If
60 Next F


Exit Sub
TrataErro:
MsgBox [Ô] Erro [Ô] & Err.Description & [Ô] na Linha [Ô] & Str$(Erl)
End Sub
FERPIRO 14/08/2012 22:05:03
#407946
Boa noite !!!

Este erro acontece quando fazemos cálculos com campos vazio.

Exemplo:
Se usar campos com formatação [Ô]FormatNumber + CCur[Ô] e for vazio vai da este erro Type Mismatch
Variável = FormatNumber(Campo 1) + CCur(Campo 2))

Na minha aplicação Usei [Ô]0[Ô] zero quando os campos era vazio !!!!!!

ou pode fazer assim:

On error goto Erro
Variável = FormatNumber(Campo 1) + CCur(Campo 2))
Exit sub
Erro:
(Sem o msgbox para mostrar o erro q vai passa de boa)

CARLINHOS.SONEG 15/08/2012 13:28:33
#407979
Olha quando eu preciso fazer isso eu coloco no form load uma função de error [Ô]on error goto fim[Ô] e depois crio ela assim

fim:

open [Ô]c:\log.txt[Ô] for append #1
print #1, err.description
close #1

Boa sorte....
MLALEX 15/08/2012 14:11:11
#407981
Agora estou encontrando a luz. Achei interessante a resposta do Marcelo-Treze, mas eu vou ter que enumerar essas linhas na mão?? Não existe uma função no programa que faça isso?
LUIS.HERRERA 15/08/2012 14:25:21
#407983
Mlalex veja só. Existe um ADD IN para VB6 chamado MZTools. Ele é free e tem inúmeros recursos, entre eles fazer a numeração das linhas automaticamente ou retirá-las quando for das manutenção no código.

Existem vários recursos nele, muito bom. Tem versão para VB.net só que é paga e não vejo muita utilidade, pois o .net parece já ter todos os recursos embutidos.

Voltando a sua dúvida, você precisa fazer o seguinte para evitar 90% dos problemas no seu código:

1- analise cada rotina (função, procedimentos, etc...) que podem gerar erros, ex: Acesso a banco de dados, cálculos, acesso a recursos externos (hardware, arquivos, etc...) e inclua nessas rotinas o tratamento de erro como explicado pelo Marcelo Treze.

2- Depois que sua rotina tiver o tratamento, você aplica a numerção com o MZtools para cada uma.

é muito simples e prático além de evitar muitos problemas.

Nota: Gerar um Log ao ocorrer um erro é bem útil, grava um TXT ou envia um email para sua caixa postal, com o nome da rotina, form, número e descrição do erro além do número da linha. Se for mais zeloso, pode incluir uma descrição do que fazia exatamente dentro de uma rotina, quando for muito complexa e tiver várias etapas, além do nome e licença do cliente / usuário, assim é bem mais fácil resolver.

Página 1 de 2 [13 registro(s)]
Tópico encerrado , respostas não são mais permitidas