Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

arrelialp

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

Mensagens Recomendadas

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:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros 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

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.