Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
arrelialp

Cadeia de caracteres de entrada com formato incorrecto. [Resolvido]

Recommended Posts

arrelialp

Estou com um problema numa ComboBox que permite visualizar números. Gostaria que aparecesse, logo no início da ComboBox, "Seleccione um N.º". Só que obtenho sempre este erro: "Cadeia de caracteres de entrada com formato incorrecto. Não foi possível guardar <Seleccione um N.º> na coluna Numero_Funcionario. O tipo previsto é Int32.

O código é o seguinte

Sub CarregaNumeros()
        Try
            Dim connString As String = "Data Source=..."
            Using connection As New SqlConnection(connString)
                   Dim SQL As String = "select * from Funcionarios"
                   Dim da As New SqlDataAdapter(SQL, connection)
                   Dim ds As New DataSet
                da.Fill(ds)
                ' Preenche a combobox 
                With Me.ComboBoxNumeroFuncionario
                    .DisplayMember = "Numero_Funcionario"
                    .ValueMember = "ID_Funcionaio"
                    .DataSource = ds.Tables(0).DefaultView
                    ' Definições para autocomplete 
                    .DropDownStyle = ComboBoxStyle.DropDown
                    .AutoCompleteMode = AutoCompleteMode.Suggest
                    .AutoCompleteSource = AutoCompleteSource.ListItems
                End With
                ' Insere um novo item geral na posição 0 
                ' com uma descrição geral a indicar o tipo de lista 
                Dim dr As DataRow
                dr = ds.Tables(0).NewRow
                dr.Item("ID_Funcionario") = 0
                dr.Item("Numero_Funcionario") = "Seleccione um N.º"
                ds.Tables(0).Rows.InsertAt(dr, 0)
                'Selecciona o item inserido 
                Me.ComboBoxNumeroFuncionario.SelectedIndex = 0
            End Using
        Catch ex As Exception
            MessageBox.Show(ex.Message, My.Application.Info.Title, MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try
    End Sub

Obrigado em avanço  :thumbsup:

Share this post


Link to post
Share on other sites
nennas

Tas com tanto trabalho (até acho que não podes fazer o que estas a a tentar) porque não pões antes da combobox um label a dizer escola um numero ou por cima. Ou se calhar não tão correcto acrescentas na base de dados isso.

Share this post


Link to post
Share on other sites
pmaster

Ou tenta simplesmente a ver se resolve o teu problema  :)

combobox1.text = "Seleccione um N.º"

Share this post


Link to post
Share on other sites
Pwyll

O teu problema não esta na combo mas sim na datarow.

Dim dr As DataRow
dr = ds.Tables(0).NewRow
dr.Item("ID_Funcionario") = 0
dr.Item("Numero_Funcionario") = "Seleccione um N.º"
ds.Tables(0).Rows.InsertAt(dr, 0)

O campo Numero_Funcionario esta defenido na base de dados como um int32. Ao adicionares uma nova datarow o sistema vai buscar o schema e sabe que dr.Item("Numero_Funcionario") é um integer como tal nao pode receber o texto que queres la por.

O que tens que fazer e adicionar esse mesmo item na combo que visualiza os dados e nao na tabela que contem os dados.

Share this post


Link to post
Share on other sites
arrelialp

OK. Obrigado!! Ficou resolvido e funcionou na perfeição.

Já consigo carregar bem os dados nas três ComboBoxes quando o form é carregado. Agora só me falta relacionar as ComboBoxes.

Será que me podem ajudar na questão que eu coloquei neste forum: "Visual Basic 2008 Relacionar 3 ComboBoxes".

Muito Obrigado

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.