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

rui_fernandes

[VB.NET 2003] Conteudo duma Combobox's....

20 mensagens neste tópico

Boas...

a minha kestao e a seguinte:

a um objecto no ACCESS que e igual a uma combobox que tem uma particularidade muito interessante, p exemplo, lendo dados duma Base de Dados, p exemplo da tabela clientes, com os campos cod_cliente e cliente. nesse objecto posso criar duas colunas e descarregar oa dados para esse objecto e esconder o cod_ cliente atribuindo ao tamanho dessa coluna 0.

isto e muito interessante porke podemos selecionar um cliente desse objecto e podemos saber kual o cod_cliente mesmo n estando a mostrar porke esta escondido.

ja estive a ver as propriedades da combobox no VB e n descubri cm se fax issu..

SERA POSSIVEL? :hmm:

se me poderem ajudar ficava agradecido. :confused:

cumps.

RUI FERNANDES.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

podes preencher a combobox atraves de uma consulta que vai buscar os nomes e depois no evento de Mudança de Selecção da Combobox, fazes um If em que pegas no texto do item seleccionado na combobox (Nome, neste caso) e fazes uma consulta que te devolva o dado (por ex. Código) relacionado com o Nome seleccionado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya...

e a unica solucao a utilizar?

n havera outra a faxer?

ja pensei nesta e em guardar num array os cod_clientes.

mas o ideal era igual ao objecto, pk assim podera ser mais lento, ou desta maneira p exemplo, se exixtir o mesmo cliente mas c diferente cod_cliente?

cumps.

e brigadao.

RUI FERNANDES.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e nao da para "descarregar" os dados com o .datasouce ?

eu so sei c o datareader.

nas datagrid's sei k da com o datasource mas nas combobox n consigo.

ajudem pffff...

cumps.

RUI FERNANDES

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

uma maneira um bokado primitiva, mas dá  :cheesygrin:

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        Dim ds As New DataSet

        ds.Tables.Add(New DataTable)

        ds.Tables(0).Columns.Add(New DataColumn("ID"))

        ds.Tables(0).Columns.Add(New DataColumn("Nome"))

        Dim a() As Object = {1, "João"}

        Dim b() As Object = {2, "José"}

        ds.Tables(0).Rows.Add(a)

        ds.Tables(0).Rows.Add(;)

        Dim i As Integer

        For i = 0 To ds.Tables(0).Rows.Count - 1

            ComboBox1.Items.Add(ds.Tables(0).Rows(i)(0) & "  " & ds.Tables(0).Rows(i)(1))

        Next

    End Sub

End Class

espero ter ajudado  :confused:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu costumo fazer da seguinte maneira:

combo1.datasource = myDataSet
combo1.ValueMember = "ID"

Depois para saberes o ID do item seleccionado na combo, usas o SelectedValue.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Código

combo1.datasource = myDataSet

combo1.ValueMember = "ID"

nao m esta a funcionar isto....

podes simplificar melhor?

combo1.datasource = myDataSet ---> e so isto?n selecionas a tabela?

combo1.ValueMember = "ID" --> e aki?e o nome da coluna?

cumps.

e desculpem mas axu k nao esta mt explicito.

BGD.

RUI FERNANDES

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Olha, já sei mais uma  ;)

o myDataSet  tem de ser uma datatable e o valuemember é o nome da coluna de indice.

desta forma só dá para mostrar o indice.

Em VB2003 ñ tenho a certeza se trabalha  :hmm: é uma questão de testar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Public Function mostrarcombobox(ByVal Sql As String, ByVal combo As ComboBox)

        Dim DS As DataSet = New DataSet
        Dim DA As OleDbDataAdapter = New OleDbDataAdapter
        DA.SelectCommand = New OleDbCommand(Sql, coneccaoBD)
        DA.Fill(DS)

        Dim i As Integer
        For i = 0 To DS.Tables(0).Rows.Count - 1
            combo.Items.Add(DS.Tables(0).Rows(i)(0)) 'DS.Tables(0).Rows(i)(0) & "  " & 
        Next

        DA.Dispose()
        DS.Dispose()
    End Function

Estou a fazer assim e funciona bem.

Se estiver a fazer alg coisa mal digam para corrigir kuanto a mim e a kem se seguir por aki.

Cumps e BGD. :P

RUI FERNANDES.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

o erro que da e o seguinte...

Object reference not set to an instance of an object.

com o NEW nao resolve o meu problema...

:hmm:

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

peco desculpa...

enganei-me n erra aki neste topico k keria responde.

SORRY.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Public Function mostrarcombobox(ByVal Sql As String, ByVal combo As ComboBox)

        Dim DS As DataSet = New DataSet
        Dim DA As OleDbDataAdapter = New OleDbDataAdapter
        DA.SelectCommand = New OleDbCommand(Sql, coneccaoBD)
        DA.Fill(DS)

        Dim i As Integer
        For i = 0 To DS.Tables(0).Rows.Count - 1
            combo.Items.Add(DS.Tables(0).Rows(i)(0)) 'DS.Tables(0).Rows(i)(0) & "  " & 
        Next

        DA.Dispose()
        DS.Dispose()
    End Function

Estou a fazer assim e funciona bem.

Se estiver a fazer alg coisa mal digam para corrigir kuanto a mim e a kem se seguir por aki.

Cumps e BGD. ;)

RUI FERNANDES.

Como tinha referido,eu não faço dessa forma, porque estou a ler um dataset sem necessidade, pois posso aponta-lo directamente para a combobox.

        Dim conn As SqlConnection = New SqlConnection("Data Source=SERVIDORSQL;Initial Catalog=TESTE;Persist Security Info=True;User ID=sa;Password=xpto")
        Dim da As SqlDataAdapter = New SqlDataAdapter("SELECT ID,Nome FROM Users", conn)
        Dim ds As New DataSet
        da.Fill(ds)

        ComboBox1.DataSource = ds.Tables(0)
        ComboBox1.DisplayMember = "Nome"
        ComboBox1.ValueMember = "ID"

Se fizeres algo do género é bastante mais simples, mais rapido e na minha opinião mais correcto. Para depois então saberes qual é o ID correspondente à opção seleccionada na combo, usas o SelectedValue.

Textbox1.Text = Combobox1.SelectedValue

Espero que tenhas compreendido.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Agora sim.ta muito bem explicido tiago...

e assim c o datasouce se forem muitos registo e melhor, nao se torna tao lento ao abrir a combobox e a descarregar os dados.

muito obrigado pela ajuda..

:cheesygrin:

Abraco.

Rui Fernandes

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois, só agora é q tive tempo pra apresentar uma solução mais detalhada. Sempre às ordens

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Boas...

como e que eu sei se um item da combobox ja foi selecionado ou nao?

a condicao que usei foi esta ---> "ComboBox.SelectedItem = False" ,mas n me ta a funcionar.... :wallbash:

cumps.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

algo do tipo:

If combo1.SelectedIndex = -1 Then
'nenhum item seleccionado
End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

boas..

Tiago Salgado,com issu resolvia perfeitamente,mas eu ao preencher a combobox c o datasource,ele preencxhe cm e obvio a posicao 0, mas ja fica esta selecionada tar a perceber....

se calhar uma solucao e eu atriburir ao selectedindex=-1.

axim  ja n fica c a posicao 0, mas sim a -1.

mas vou testar, e se soberem de outra maneira mais eficas digam pf.

tranks Tiago Salgado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como eu disse resolve, apenas no load do form fiz isto ---> "ComboBox.SelectedIndex = -1

cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes também tentar com o SelectedValue. Algo do tipo

If combo1.SelectedValue = 0 Then
'nao tá seleccionado
End If

0

Partilhar esta mensagem


Link 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