TRATAR ERRO NA CLASSE
                    Pessoal.
Eis aqui mais uma dúvida.
O erro é o famoso e nefasto.
Eu sei o que quer dizer, que não é válido essa conversão.
Eu sei também que se eu usasse esse código no botão;
resolveria o meu problema.
Só que quero tratar esse código na classe e não no formulário.
Segue o código na classe
Segue o código no formulário
Como ficaria o código correto na classe?
Obrigado a todos
            Eis aqui mais uma dúvida.
O erro é o famoso e nefasto.
 Conversion from string [Ô][Ô] to type [ô]Integer[ô] is not valid.  Eu sei o que quer dizer, que não é válido essa conversão.
Eu sei também que se eu usasse esse código no botão;
    If txtId.Text = [Ô][Ô] Then
            MessageBox.Show([Ô]Selecione uma marca[Ô])
            Exit Sub
        Else
            deletar()
        End If resolveria o meu problema.
Só que quero tratar esse código na classe e não no formulário.
Segue o código na classe
   Public Sub deletar()
        If _id.HasValue = Nothing Then
            KryptonMessageBox.Show([Ô]SELECIONE UMA MARCA[Ô], empresa, MessageBoxButtons.OK, MessageBoxIcon.Information)
            Exit Sub
            [ô]If _id = [Ô][Ô] Then
            [ô]    Exit Sub
        Else
            Dim resultado As DialogResult
            resultado = KryptonMessageBox.Show([Ô]EXCLUIR ESSA MARCA ?[Ô], empresa, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
            If resultado = DialogResult.Yes Then
                Try
                    c.ConOpen()
                    Dim sql As String = [Ô]update marcas set situacao=@situacao where id=@id[Ô]
                    c.Cmd = New MySqlCommand(sql, c.Cnn)
                    c.Cmd.Parameters.AddWithValue([Ô]@situacao[Ô], _situacao)
                    c.Cmd.Parameters.AddWithValue([Ô]@id[Ô], _id)
                    c.Cmd.ExecuteNonQuery()
                    KryptonMessageBox.Show([Ô]DADOS GRAVADOS[Ô], empresa, MessageBoxButtons.OK, MessageBoxIcon.Information)
                Catch ex As Exception
                    MessageBox.Show(ex.Message)
                Finally
                    c.ConClose()
                End Try
            End If
        End If
    End Sub Segue o código no formulário
    Sub deletar()
        With _m
            _m.Situacao = 1
            _m.Id = CInt(txtId.Text)
            _m.deletar()
        End With
        carregaGrid()
    End Sub Como ficaria o código correto na classe?
Obrigado a todos
                    Public Function deletar() As Boolean
If _id.HasValue = Nothing Then
KryptonMessageBox.Show([Ô]SELECIONE UMA MARCA[Ô], empresa, MessageBoxButtons.OK, MessageBoxIcon.Information)
Return False
Else
Dim resultado As DialogResult
resultado = KryptonMessageBox.Show([Ô]EXCLUIR ESSA MARCA ?[Ô], empresa, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If resultado = DialogResult.Yes Then
Try
c.ConOpen()
Dim sql As String = [Ô]update marcas set situacao=@situacao where id=@id[Ô]
c.Cmd = New MySqlCommand(sql, c.Cnn)
c.Cmd.Parameters.AddWithValue([Ô]@situacao[Ô], _situacao)
c.Cmd.Parameters.AddWithValue([Ô]@id[Ô], _id)
c.Cmd.ExecuteNonQuery()
KryptonMessageBox.Show([Ô]DADOS GRAVADOS[Ô], empresa, MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message)
Return False
Finally
c.ConClose()
Return True
End Try
End If
End If
End Sub
[ô]na chamada
With _m
_m.Situacao = 1
_m.Id = CInt(txtId.Text)
_m.deletar()
End With
if _m.deletar=true then
carregaGrid()
end if
            If _id.HasValue = Nothing Then
KryptonMessageBox.Show([Ô]SELECIONE UMA MARCA[Ô], empresa, MessageBoxButtons.OK, MessageBoxIcon.Information)
Return False
Else
Dim resultado As DialogResult
resultado = KryptonMessageBox.Show([Ô]EXCLUIR ESSA MARCA ?[Ô], empresa, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If resultado = DialogResult.Yes Then
Try
c.ConOpen()
Dim sql As String = [Ô]update marcas set situacao=@situacao where id=@id[Ô]
c.Cmd = New MySqlCommand(sql, c.Cnn)
c.Cmd.Parameters.AddWithValue([Ô]@situacao[Ô], _situacao)
c.Cmd.Parameters.AddWithValue([Ô]@id[Ô], _id)
c.Cmd.ExecuteNonQuery()
KryptonMessageBox.Show([Ô]DADOS GRAVADOS[Ô], empresa, MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.Message)
Return False
Finally
c.ConClose()
Return True
End Try
End If
End If
End Sub
[ô]na chamada
With _m
_m.Situacao = 1
_m.Id = CInt(txtId.Text)
_m.deletar()
End With
if _m.deletar=true then
carregaGrid()
end if
                    Uma dica para deixar o código com menos if[ô]s e variaveis, consequentemente mais facil de se entender.
Ao inves de:
Sugiro:
If MsgBox([Ô]Confirma excluir[Ô], MsgBoxStyle.Question + MsgBoxStyle.YesNo, [Ô]CONFIRMAÇÃO[Ô]) = MsgBoxResult.NO Then RETURN FALSE
[ô]OU EXIT SUB
[ô]DAI PRA BAIXO FICA MAIS LIMPO O CODIGO E FACIL DE TRATAR
                
            Ao inves de:
Citação:Dim resultado As DialogResult
resultado = KryptonMessageBox.Show([Ô]EXCLUIR ESSA MARCA ?[Ô], empresa, MessageBoxButtons.YesNo, MessageBoxIcon.Question)
If resultado = DialogResult.Yes Then
Sugiro:
If MsgBox([Ô]Confirma excluir[Ô], MsgBoxStyle.Question + MsgBoxStyle.YesNo, [Ô]CONFIRMAÇÃO[Ô]) = MsgBoxResult.NO Then RETURN FALSE
[ô]OU EXIT SUB
[ô]DAI PRA BAIXO FICA MAIS LIMPO O CODIGO E FACIL DE TRATAR
                    Do jeito que você está fazendo não tem como tratar na classe, já que você passa para ela um inteiro, a conversão de string para integer é feita no formulário então só pode ser tratada no formulário.
                
            
                    Nilson
O erro persisti.
Ele ocorre nessa linha em vermelho.
With _m
_m.Situacao = 1
[txt-color=#e80000] _m.Id = CInt(txtId.Text)[/txt-color]
_m.deletar()
End With
Na chamada do formulário, exatamente quando a variável _id recebe um valor nulo do textbox, por isso cheguei a conclusão de que não tem como eu tratar esse erro fora do formulário.
No formulário eu poderia tratar assim sem problemas
Eu tenho lido bastante que, menor a quantidade de código no formulário, melhor.(Foi o que entendi) .
Por isso essa minha insistência em tratar na classe esse problema.
Mas como mencionado acima, as vezes o tratamento tem que ser no formulário mesmo.
é isso mesmo ,esse erro só poderei tratar no formulário ?
até mais.
            O erro persisti.
Ele ocorre nessa linha em vermelho.
With _m
_m.Situacao = 1
[txt-color=#e80000] _m.Id = CInt(txtId.Text)[/txt-color]
_m.deletar()
End With
Na chamada do formulário, exatamente quando a variável _id recebe um valor nulo do textbox, por isso cheguei a conclusão de que não tem como eu tratar esse erro fora do formulário.
No formulário eu poderia tratar assim sem problemas
   Sub deletar()
        Try
            With _m
                _m.Situacao = 1
                _m.Id = CInt(txtId.Text)
                _m.deletar()
            End With
            carregaGrid()
        Catch ex As Exception
            MessageBox.Show([Ô]selecione uma marca[Ô])
        End Try
    End Sub Eu tenho lido bastante que, menor a quantidade de código no formulário, melhor.(Foi o que entendi) .
Por isso essa minha insistência em tratar na classe esse problema.
Mas como mencionado acima, as vezes o tratamento tem que ser no formulário mesmo.
é isso mesmo ,esse erro só poderei tratar no formulário ?
até mais.
                    OK, OCELOT
Muito obrigado já respondeu a minha dúvida acima.
Enquanto estava formulando as palavras, você já tinha respondido.
                
            Muito obrigado já respondeu a minha dúvida acima.
Enquanto estava formulando as palavras, você já tinha respondido.
                        Tópico encerrado , respostas não são mais permitidas
                    
                

