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

andfernandes

[VB.NET] ComboBox e Bd

7 mensagens neste tópico

Bom dia! Estou com um problema na impressao de uns dados da bd, o codigo é o seguinte:

        str1 = "SELECT Est_Nome FROM EstadoCivil INNER JOIN Aluno ON EstadoCivil.Est_ID = Aluno.A_Est_ID WHERE(Aluno.A_NumAluno = '" & ID1 & "')"

        daRelatorio = New OleDb.OleDbDataAdapter(str1, cnn)

        daRelatorio.SelectCommand.CommandText = str1

        cbRelatorio = New OleDb.OleDbCommandBuilder(daRelatorio)

        daRelatorio.Fill(ds1, "Relatorio1")

        cmb_estadocivil.DataSource = ds1.Tables("Relatorio1")

        cmb_estadocivil.DisplayMember = "Est_Nome"

A minha intenção é: tenho uma tabela aluno e uma estado civil, depois quero, ao ver os dados do aluno, mostrar na combo o estado civil do aluno ao mesmo tempo que os outros estados estejam presentes na combo, por exemplo solteiro mas ao clicar na combo aparecer os restantes estados para se seleccionar caso se deseje mudar o estado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Para fazeres isso tens que fazer umas alterações no teu codigo.

Em primeiro lugar, carregas por exemplo num dataset os estados ( SELECT Est_ID,Est_Nome FROM EstadoCivil )

Depois para associas o campo que queres que seja mostrado e o campo que queres q seja o teu identificador do item...algo deste genero:

cmb_estadocivil.DataTextField = "Est_Nome"
cmb_estadocivil.DataValueField = "Est_ID"
cmb_estadocivil.DataBind()

Depois fazes outra consulta para saberes o Est_ID do aluno que pretendes, e com o Est_ID que te foi devolvido fazes:

cmb_estadocivil.SelectedValue = "o est_id que foi devolvido"

Espero ter ajudado...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Resolvi de outra maneira, mas obrigado na mesma pela ajuda...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora podias por aqui como resolveste caso apareça alguem com a mesma duvida ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

       

cmb_estadocivil.DataSource = ds.Tables("EstadoCivil")

        cmb_estadocivil.DisplayMember = "Est_Nome"

        Dim pos As Integer

        pos = ds.Tables("Aluno").Rows(ID)("A_Est_ID")

        cmb_estadocivil.SelectedIndex() = pos - 1

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não concordo com esse código. Até poderá funcionar para esta situação, mas só funciona qd tens IDs sequenciais e sem falhas.

Imagina q tens a tua tabelas com os seguintes registos

| ID | Nome  |

  2  | Teste1 |

  5  | Teste2 |

  10 | Teste3 |

Tens a combo com os registos carregados...e queres escolher o registo Teste2. Ao devolveres o ID desse registo, vai-te retornar o valor 5... qd vais fazer o cmb_estadocivil.SelectedIndex() = pos - 1 vai-te dar um "out of range" ... pq só tens 3 registos ( index da combo vai de 0 a 2 ) e tas a tentar ir para o index 4.

Daí aconselho-te a usares antes o SelectedValue da maneira que te indiquei...assim garantes que funciona em qq situação.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Pois é...por acaso nao pensei nessa situação...vou corrigir entao no meu codigo...obrigado

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