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

malainhocf

Prencher um combobox com dados do sql server

Mensagens Recomendadas

malainhocf

Olá a todos, boa noite,

Como posso preencher um combobox em que mostra por exemplo o nome do pais mas o que ele guarda para inserção é o idpais

Mostra uma coisa mas tem o valor do id da coisa em questão

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
ribeiro55

Basta atribuíres o DisplayMember e o ValueMember ao nome da coluna do que queres mostrar e do valor que está por detrás, respectivamente.

Um exemplo (num form mete uma Combobox e uma label com os nomes padrão, e substituí o código por este):

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ComboBox1.DisplayMember = "Nome"
        ComboBox1.ValueMember = "ID"

        'Simular uma datatable, imaginando que vem da base de dados
        Dim DT As New DataTable
        DT.Columns.Add("ID")
        DT.Columns.Add("Nome")
        DT.Rows.Add(New Object() {1, "Zeca"})
        DT.Rows.Add(New Object() {2, "Gertrudes"})
        DT.Rows.Add(New Object() {3, "Felismina"})

        ComboBox1.DataSource = DT
    End Sub

    Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
        Label1.Text = ComboBox1.SelectedValue.ToString
    End Sub
End Class

Depois, SelectedText resgata o DisplayMember e SelectedValue, o ValueMember.


Sérgio Ribeiro


"Great coders aren't born. They're compiled and released"
"Expert coders do not need a keyboard. They just throw magnets at the RAM chips"

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Olá a todos, boa tarde,

Não consegui preenchar o combobox com dados da base de dados

Depois também queria perguntar se estou a ter uma boa prática de programação com este código abaixo.

O que o evento load faz é 1º preenchar o combobox com os utilizadores. 2º preencher o datagridview com dados da base de dados

O meu código:

----------------------------------------------------------------------------------------------------------------------------------

Private Sub frmFamilias_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim connstring As String = "Data Source=.\SQLEXPRESS;AttachDbFilename='C:\sqlserver\me.mdf';" & _
  ";Integrated Security=True;User Instance=True"

        Dim conn As New SqlConnection(connstring)

        conn.Open()
        ' Aqui inicia a interação com a base de dados
        Dim sqlUtilizadores As String
        sqlUtilizadores = "select idutilizador, utilizador from me_utilizadores order by idutilizador asc"

        Dim cmd As New SqlCommand(sqlUtilizadores, conn)

        Dim dr As SqlDataReader

        dr = cmd.ExecuteReader

        cbbUtilizadores.DisplayMember = "Todos"
        cbbUtilizadores.ValueMember = 0
        While dr.Read()
            cbbUtilizadores.DisplayMember = dr.Item(1).ToString()
            cbbUtilizadores.ValueMember = CInt(dr.Item(0))
        End While

        conn.Close()
        conn = Nothing
        cmd = Nothing
        dr = Nothing

        Dim conn2 As New SqlConnection(connstring)

        conn2.Open()

        Dim sql As String
        sql = "select me_familias.idfamilia, me_familias.descricao, me_familias.idutilizador, me_utilizadores.utilizador from me_familias left outer join me_utilizadores on me_familias.idutilizador=me_utilizadores.idutilizador"

        Dim da As New SqlDataAdapter(sql, conn2)

        Dim ds As New DataSet

        da.Fill(ds)

        DataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
        DataGridView1.AllowUserToAddRows = False
        DataGridView1.AllowUserToDeleteRows = False
        DataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically
        DataGridView1.MultiSelect = False
        DataGridView1.SelectionMode = DataGridViewSelectionMode.FullRowSelect

        DataGridView1.DataSource = ds.Tables(0).DefaultView

        DataGridView1.Columns.Remove("idutilizador")
        DataGridView1.Columns(0).HeaderText = "ID"
        DataGridView1.Columns(1).HeaderText = "Familia"
        DataGridView1.Columns(2).HeaderText = "Utilizador"

        conn2.Close()
        da = Nothing
        ds = Nothing
    End Sub

-----------------------------------------------------------------------------------------------------------------------------------

1º Porque não preencheu o cambobox com dados ?

2º Estou a ter uma prática correcta de programação ?

Obrigado


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
malainhocf

Olá a todos, boa tarde,

Já resolvi o meu problema

Usei um datasource

Eu não estava a perceber que no displaymember e no valueMember tinha que por o nome dos campos da base de dados.

Obrigado a todos que me ajudaram


Cumprimentos

Cesar Oliveira

Desenvolvo websites e aplicações web

http://www.profissionalweb.net

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.