none
problemas para Popular combobox com banco de dados access RRS feed

  • Pergunta

  • ola à todos

    tenho duas combobox... estava preenchendo elas com dados do bd access atraves de uma propriedade combobox taks...

    mas não deu mt certo pois alguns problemas estão ocorrendo e não acho soluçao pra isso..

    enfim, vou popular minha combo da maneira "natural" com a string de conexao, o command o adapter e etc..

    gostaria da ajuda de vcs para o seguinte: o comando pra popular a combo  vai no propria combo ou no evento load? como poderia popular duas combos ao mesmo tempo, com campos diferentes do bd? lembrando que a segunda combo só é preenchida à partir do que foi escolhdo na primeira..além disso toda vez que for adicionado um item ao bd, ele deve ser atualizado na combo

    att

    sexta-feira, 24 de fevereiro de 2012 20:25

Respostas

Todas as Respostas

  • Boa noite amigo, vc terá que popular o primeiro combobox.

      protected void carreaDrop1()
        {
            try
            {
                ddl1.DataSource = oseu retorno do banco de dados
                ddl1.DataTextField = "text";
                ddl1.DataValueField = "value";
                ddl1.DataBind();
                ddl1.Items.Insert(0, "-- SELECIONE --");


            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    Apos vc terá que que pegar o retorno que o usurio escolheu no primeiro drop.

     if (!IsPostBack)
            {
              carreaDrop1()
                }
                else
                {

    \\aqui será apos post back 

    carreaDrop2();

        }

     protected void carreaDrop2()
        {
            try
            {
                ddl2.DataSource = ddl1.SelectedItem.Text;
                ddl2.DataTextField = "text";
                ddl2.DataValueField = "value";
                ddl2.DataBind();
                ddl2.Items.Insert(0, "-- SELECIONE --");


            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

    Assim vc ira carregar o segundo combo de acordo com o que o usurio escolher no primeiro.


    Caso a resposta tenha ajudado favor marcar como respondida.

    sexta-feira, 24 de fevereiro de 2012 23:17
  • boa noite,

    mas como eu posso adaptar esse teu código pra vb.net?

    Att

    sexta-feira, 24 de fevereiro de 2012 23:32
  • Oi gc.contatos,

    Voce pode popular as duas comboboxs de várias maneiras.

    Uma delas é voce popular a primeira já de primeira, no evento load do form. Ou seja, quando o form abre, preencha ja a primeira combo. A segunda combobox pode ser preenchida com o evento clique da primeira combobox (quando o utilizador clicar na primeira combobox ou trocar um elemento da combobox)

    Cara é essa a sua dúvida? Pelo que entendi voce não está com alguma difificuldade de montar o código mas apenas quer saber onde colocar os códigos! Certo?

    Espero ter ajudado

    Augusto

    sábado, 25 de fevereiro de 2012 02:36
  • ola augusto,

    vlw pela ajuda,

    entum, como seria esse evento click? 

    att

    sábado, 25 de fevereiro de 2012 02:51
  • Oi gc.contatos,

    Voce selecione a combobox, vai até a janela de propriedade e faça clik naquele sinal de raio ou descarga elétrica! Aí voce terá dispoível todos os eventos...Aí, faça duplo clique no evento clique e coloque lá os códigos.

    Para ajuda de como voce vai preencher as comboboxs, voce pode consultar a seguinte thread:

    http://social.msdn.microsoft.com/Forums/pt/adoptpt/thread/04f2fbd1-da16-4f5d-bbb2-55d78f22f2b5

    É so copiar e fazer a adaptação.

    Abraços

    sábado, 25 de fevereiro de 2012 03:07
  • opa augusto..

    vou testar o que vc me indicou,

    mas enquanto isso preciso saber: pra usar os dados do banco precisa ir em data>add new data source?

    ou só os comandos e o imports system.data.oledb já são suficiente?

    att

    sábado, 25 de fevereiro de 2012 03:16
  • Oi gc.contatos,

    Então, com os comandos voce tem tudo para preencher o banco de dados.

    att

    sábado, 25 de fevereiro de 2012 03:22
  • augusto, não to nem conseguindo testar o que vc me mandou,

    porque minha combo não dá "sinal de vida" no nem no evento load, tem como vc me ajudar?

    segue o cod para análise

    Imports System.Data.OleDb
    Public Class Form1


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


            Dim cnx As New OleDb.OleDbConnection


            With cnx


                .ConnectionString = "provider=Microsoft.Jet.OLEDB.12.0;Data Source=C:\Users\Giovanni Cunha\Desktop\teste do software\teste novo 2\WindowsApplication1\Banco de Dados1.accdb"
                .Open()


            End With


            Try


                Dim cmd As New OleDb.OleDbCommand("select * from tabela1 order by nome", cnx)
                Dim ad As New OleDb.OleDbDataAdapter(cmd)
                Dim ds As New DataSet()
                ad.Fill(ds)
                ComboBox1.DataSource = ds.Tables(0)
                ComboBox1.DisplayMember = "nome"
                ComboBox1.ValueMember = "id"


            Catch ex As Exception


                MessageBox.Show(ex.Message)


            End Try




        End Sub

    sábado, 25 de fevereiro de 2012 03:44
  • Oi gc.contatos,

    Se no evento Click não funcionar, selecione o evento SelectedIndexChanged da combobox (na verdade é melhor)

    flw

    • Marcado como Resposta gc.contatos sábado, 25 de fevereiro de 2012 06:37
    sábado, 25 de fevereiro de 2012 03:46
  • mas isso não seria na segunda combo?

    a primeira vc falow pra eu por no load

    att

    sábado, 25 de fevereiro de 2012 03:49
  • Exatamente isso. A primeira combobox fica por conta do evento load

    att

    sábado, 25 de fevereiro de 2012 03:57
  • então, a primeira combo não ta sendo preenchida no evento load

    por isso nem tentei a combo2 ainda, pois a combo 2 sera carregada se acordo com a combo 1.. 

    att

    sábado, 25 de fevereiro de 2012 04:00