none
A conversão do tipo 'Banco' no tipo 'Integer' não é válida RRS feed

  • Pergunta

  • Tenho aplicação dividida em duas partes - Financeiro (exe) e Repositorio (dll), no Financeiro tenho um form com duas combobox - cboBanco responsável por exibir os bancos cadastrados e cboAgencia responsável por exibir as agencias cadastradas. 

    Quando escolho um banco a cboAgencia é carregada com as agências pertencentes ao banco escolhido, porém, quando executo a aplicação aparece o erro "A conversão do tipo 'Banco' no tipo 'Integer' não é válida" e se eu continuo com a aplicação as combobox são carregadas com os dados normalmente. Abaixo segue o código responsável pela exibição dos dados:

    Financeiro:

    'código responsável pelo preenchimento da comboboxbanco.
    Private Sub carregaComboBoxBanco()
        Dim banco As New BancoRepositorio()
        cboBanco.DataSource = banco.Consultar()
        cboBanco.ValueMember = "id"
        cboBanco.DisplayMember = "nome"
        cboBanco.SelectedIndex = -1
    End Sub
    
    'código responsável pelo preenchimento da comboboxagencia.
    Private Sub carregaComboBoxAgencia()
        Dim agencia_banco As New Agencia_BancoRepositorio()
        cboAgencia.DataSource = agencia_banco.exibirAgencia(cboBanco.SelectedValue)
        cboAgencia.ValueMember = "id"
        cboAgencia.DisplayMember = "codigo" 'exibe o código da agência
        cboAgencia.SelectedIndex = -1
    End Sub
    
    Private Sub frmLancamentosDespesasBanco_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        carregaComboBoxBanco()
    End Sub
    
    Private Sub cboBanco_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboBanco.SelectedValueChanged
        carregaComboBoxAgencia()
    End Sub
    
    
    

    Repositorio:

    Public Class Agencia_BancoRepositorio
    
        Inherits Repositorio(Of Agencia_Banco)
    
        Public Function exibirAgencia(ByVal intCodigo As Integer) As List(Of Agencia_Banco)
            Using session As ISession = SessionFactory.AbrirSession()
                Return (From e In session.Query(Of Agencia_Banco)() Where e.id_banco.Equals(intCodigo) Select e).ToList
            End Using
        End Function
    
    End Class
    
    Public Class BancoRepositorio
    
        Inherits Repositorio(Of Banco)
        
    End Class
    
    Public Class Agencia_BancoMap
        Inherits ClassMap(Of Agencia_Banco)
    
        Public Sub New()
            Id(Function(m) m.id)
            Map(Function(m) m.nome)
            Map(Function(m) m.id_banco)
            Map(Function(m) m.codigo)
            Table("agencia_banco")
        End Sub
    
    End Class
    
    Public Class BancoMap
        Inherits ClassMap(Of Banco)
    
        Public Sub New()
            Id(Function(m) m.id)
            Map(Function(m) m.codigo_banco)
            Map(Function(m) m.nome)
            Table("banco")
        End Sub
    
    End Class
    
    Public Class Agencia_Banco
        Public Overridable Property id As Integer
        Public Overridable Property nome As String
        Public Overridable Property id_banco As Integer
        Public Overridable Property codigo As String
    End Class
    
    Public Class Banco
        Public Overridable Property id As Integer
        Public Overridable Property codigo_banco As String
        Public Overridable Property nome As String
    End Class


    quarta-feira, 16 de março de 2016 01:17

Respostas

  • Boa noite.

    O problema se encontra no evento que tu estás chamando:

    Private Sub cboBanco_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboBanco.SelectedValueChanged
        carregaComboBoxAgencia()
    End Sub

    O ValueChanged e IndexChanged executam com no Bind do DataSource.

    Use o mesmo código, porém pelo evento SelectionChangeCommited que deve resolver teu problema.

    ;)


    Att., Rafael Simor

    • Marcado como Resposta Marcos SJ quarta-feira, 16 de março de 2016 13:15
    quarta-feira, 16 de março de 2016 02:35