Ir para conteúdo
Fórum Script Brasil
  • 0

Comando de parada mais forte que Exit Sub


Musashi_RS

Pergunta

Olá pessoal, estou com uma dúvida boba, pois confesso que me deu um "branco"...

Por exemplo, eu tenho uma procedure normal. Dentro dela eu chamo uma função (ou procedure). Se houver um erro na função eu quero que aborte, tanto a função, bem como a procedure que a chamou.

Se eu colocar um Exit Sub na função chamada pela procedure, quando houver erro a função é abortada, porém o programa continua executando na procedure que a chamou... Justamente o que eu quero evitar.

Tentei um comando Abort, mas acho que ele é do Delphi... Desta forma, não queria ter que fazer a função ou procedure chamada retornar um valor informando se deu erro ou não... seria incorreto.

Obrigado. :rolleyes:

Editado por Musashi_RS
Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Acho que não pode ser um End, pois a aplicação será encerrada, certo?

O que eu preciso é simplesmente parar de executar qualquer rotina que estiver executando no momento do comando de abortar.

Por exemplo, no Delphi, se ao chamar uma procedure através de outra procedure, se eu usar o comando Exit, o programa simplesmente interrompe a "segunda" procedure, a qual foi chamada pela "primeira", porém a primeira continua o processamento de onde parou.

Caso eu use o comando Abort no lugar de Exit, ambas as procedures são interrompidas, parando literalmente tudo o que o programa estiver processando, mesmo sem fecha-lo.

Talvez nem exista essa opção no VB, mas achava que tinha... ^_^

Link para o comentário
Compartilhar em outros sites

  • 0

nunca ouvi falar nd sobre isso, mas o q você podia fazer seria então, criar uma variavel publica de controle. ai você faz o seguinte, sempre q você quiser q aborte td, antes do exit sub você troca essa variavel pra true. ai você tem q ver. sempre q uma funcao chamar uma outra, quando voltar você testa se essa variavel não é true. se for você chama o exit sub de novo.

exemplo:

Dim sair As Boolean
Private Sub Form_Load
    sair = False
End Sub

Private Sub sub1
    - codigo -

    sub2
    If sair Then
        Exit Sub
    End If
    
    - codigo -
End Sub
Private Sub sub2
    - codigo -

    If [x] Then 'aqui significa q ocorreu o erro
        sair = True
        Exit Sub
    End If
End Sub[/code]

so q você teria q ficar de olho q depois tem q por sair = False de novo. você podia por isso no inicio de cada sub.

pode parece meio chato, mas não sei se tem otro jeito.

Link para o comentário
Compartilhar em outros sites

  • 0

Verifiquei o seu post.

Tinha essa dificuldade em vários oportunidades. E pra solucionar aqui utilizei um parametro "cancel" na função que é boleano.

Em caso de erro é realizado tratamento do mesmo e atribuido valor verdadeiro ao retorno ("cancel") e a o procedimento que realizou a chamada valida o retorno e executa "Exit Sub".

Private Sub Command1_Click()

    Dim cancel As Boolean
    
    funcaoteste (cancel)
    
    If cancel Then Exit Sub
    
End Sub

Espero ter contribuído! vlw

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...