Erros Tipos Imcopat...
 
Notifications
Clear all

Erros Tipos Imcopatíveis e Estouro

12 Posts
2 Usuários
0 Reactions
2,968 Visualizações
(@berti)
Posts: 0
New Member
Topic starter
 

Povo!

Está dando os seguintes erros neste formulário conforme abaixo:


Alguns códigos digitado no txt CÓDIGO validam, mas alguns outros quando digito da esses erros ou quando vou clicar em NOVO.

Onde estou errando?

 
Postado : 26/02/2015 12:17 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Olha, tem muita coisa para olhar, e vc não detalhou quando dá certo e quando dá errado, então, eu arrisquei um palpite, apenas:

Essa linha:
Dim codigo As Integer

Deve estar limitando o código, pois ele só aceitas números até: 32,767

Veja em:
https://msdn.microsoft.com/en-us/library/47zceaw7.aspx

Então, talvez vc possa, simplesmente trocar:

Dim codigo As Integer

Por

Dim codigo As Long

 
Postado : 26/02/2015 12:32 pm
(@berti)
Posts: 0
New Member
Topic starter
 

Blz gtsalikis

Dim codigo As Long resolveu o problema da pesquisa dos códigos. Ótimo.

Outro problema é quando vou clicar em NOVO ele da o erro de execução 13 apontando para a linha codigo = txt_cod em Private Sub txt_cod_AfterUpdate()

O que acha?

 
Postado : 26/02/2015 1:29 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Eu tive esse erro quando deixei um espaço no txt_cod.

E vai acontecer, porque, como vc declarou o codigo "as long", só vai aceitar números. Qualquer outra coisa vai gerar erro.

Uma alternativa é evitar isso, usando uma verificação direta, do tipo:

If Not IsNumeric(txt_cod) Then
    'coloque aqui uma ação para caso tenha dados que não numeros no código
Else
    codigo = txt_cod
End If

Outra alternativa seria validar direto o que se digita no textbox, usando o evento Keypress (aqui vc vai achar vários exemplos).

 
Postado : 26/02/2015 1:39 pm
(@berti)
Posts: 0
New Member
Topic starter
 

Não sei se é esse o problema gtsalikis.

O que acontece é somente quando eu clico em NOVO ele limpa o campo do txt_cod. O código que está no botão NOVO é o abaixo:

txt_cod.Value = Empty
Opt_dataatual.Value = False
Opt_dataseguinte.Value = False
txt_cod.SetFocus

Só assim da o erro. Ou estou falando besteira? rsrsrs

 
Postado : 26/02/2015 2:58 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Tá, mas vc tentou o que te falei?

Veja, vc está com um evento "after update" no teu textbox. Isso significa que, se vc digitar algo nele e sair, vai acionar o evento (em outras palavras, digitou alguma coisa nele, para clicar no botão NOVO, vc vai ter que sair do textbox, e vai disparar o evento after update).

E, se vc já tinha saído do textbox, quando vc clicar em NOVO, (vai de novo, disparar o evento "after update", vc estará limpando o textbox.

Então, na verdade, vc vai ter dois problemas. Por mais que vc apenas trate o código do botão NOVO, ainda estrá sujeito a ter o mesmo problema exatamente por causa desse evento.

Por isso te sugeri mexer no código do ater_update do textbox.

Aquela sugestão é bem simples, mas vc pode aprimorar e usar para outros eventos também.

 
Postado : 26/02/2015 3:20 pm
(@berti)
Posts: 0
New Member
Topic starter
 

Sou muito burro mesmo...rsrsrs....não tenho ideia de que ação colocar na sua sugestão.

If Not IsNumeric(txt_cod) Then
    'coloque aqui uma ação para caso tenha dados que não numeros no código
Else
    codigo = txt_cod
End If

Ajuda o lol aqui.

 
Postado : 26/02/2015 4:07 pm
(@gtsalikis)
Posts: 2373
Noble Member
 

Olha, pensa que essa ação vai ser executada para evitar um erro, de alguém ter digitado letras ou deixar em branco.

que tal:

exit sub

Ou

txt_cod.value = Empty
exit sub

 
Postado : 26/02/2015 4:28 pm
(@berti)
Posts: 0
New Member
Topic starter
 

Bem eu não consegui fazer como você falou, mas eu contornei de outra maneira e consegui resolver.

Porém estou encontrando o mesmo problema agora em outra rotina muito semelhante. A dificuldade que estou tendo em entender é que os campos txtbox do código e textbox CBU, recebem as informações somente em números, pois é inserido através de um leitor de código de barras, então não há manipulação manual.

Agora estou com o problema novamente de Tipos Incompatíveis quando após eu inserir os dados na textbox CBU e clico em LANÇAR, gera o erro para depurar.

Faça o teste novamente por favor, abra o anexo e clica no botão CADASTRAR ENTREGA DE CBU, insira o valor 310822 na textbox CBU e clique em LANCAR.

Realmente estou tendo dificuldades para entender e contornar a situação.

Obrigado mesmo assim pela ajuda e paciência.

 
Postado : 27/02/2015 5:16 am
(@gtsalikis)
Posts: 2373
Noble Member
 

O teu problema é o mesmo de antes: eventos

Novamente, não é o código do lançamento que está errado.

Mas você está inserindo eventos nos formulários, e está esquecendo que eles existem. Não vai adiantar nada você continuar dessa forma, se não estabelecer uma rotina de manipulação de eventos.

Nesse caso, o txt_cbu vai SEMPRE disparar o evento AfterUpdate, quando você preencher alguma coisa nele e quando limpar ele. Manualmente, ou via código.

E foi o que vc fez. Você mandou limpar via código, e isso vai disparar o AfterUpdate, e vai dar o mesmo erro do teu primeiro post.

Eu sugiro que você reveja todos os eventos.

Uma alternativa simples, é criar uma variável global (Public) em um módulo:

Public EVENTOS as boolean

Depois disso, em todos os códigos, você pode controlar os eventos da seguinte forma:

Sub XYZ()

EVENTOS = False

'seu código

EVENTOS = True

End sub

E nos códigos de eventos, tipo

Sub txt_cub_AfterUpdate()

IF NOT EVENTOS then exit sub

'seu código

End Sub

Reveja isto em todos os códigos, ou você vai ter dor de cabeça até o dia que chutar o balde, rsrs.

 
Postado : 27/02/2015 6:20 am
(@berti)
Posts: 0
New Member
Topic starter
 

Vamos lá então...rsrsrs...vou fazer o que disse e depois eu posto aqui o resultado.

Obrigado.

 
Postado : 27/02/2015 6:24 am
(@berti)
Posts: 0
New Member
Topic starter
 

Deu certo! Muito obrigado.

Tenho outra dúvida, mas vou abrir outro tópico porque não é relacionado a este.

 
Postado : 27/02/2015 7:50 am