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

Sign in to follow this  
rafaelsantos

Problema com Data Reader e inserção na combobox.

Recommended Posts

rafaelsantos

Estou com o problema quando estou a carregar de uma tabela para uma combobox. Não estou a perceber qual o problema. Imaginem que tenho 4 dados na tabela. O programa não carrega o primeiro e carrega todos os outros. Se tivesse 6 dados nao carregava o primeiro e carregava os outros todos. Ou seja nunca carrega o primeiro, não percebo :S.

 'carregar a combobox das turmas
        conn.ConnectionString = "Server=s1pc2\SQLEXPRESS; Initial Catalog=BdAlunos; Trusted_Connection=True"
        conn.Open()
        Dim drauxiliar As SqlClient.SqlDataReader
        Dim sql = "Select Cod_Turma From Turmas"
        Dim cmduser = New SqlClient.SqlCommand(sql, conn)
        drauxiliar = cmduser.ExecuteReader
        If drauxiliar.Read Then
            Do While drauxiliar.Read()
                cbbcodturma.Items.Add(drauxiliar(0))
            Loop
        Else
                MsgBox("Não pode inserir alunos sem haver turmas. Introduza primeiro pelo menos uma turma.", MsgBoxStyle.Critical, "Erro")
        End If
        conn.Close()

Share this post


Link to post
Share on other sites
jpaulino

"If drauxiliar.Read Then" lê logo o primeiro. Quando fazes "Do While drauxiliar.Read()" já estás no segundo :P

Substitui o if por "If drauxiliar.HasRows Then"

De qualquer modo devias utilizar um SqlDataAdapter. Mais ou menos isto:

                  Using da As New SqlDataAdapter("Select Cod_Turma From Turmas", conn)
                    da.SelectCommand.CommandType = CommandType.Text

                    Using ds As New DataSet
                        da.Fill(ds)

                        With cbo
                            .DisplayMember = "descricao"
                            .ValueMember = "id"
                            .DataSource = ds.Tables(0).DefaultView
                        End With

                    End Using

Share this post


Link to post
Share on other sites
paulo silva

Dim conexao As New SqlConnection
        Dim meuDataReader As SqlDataReader
        Dim meuComando As SqlCommand
     

        conexao.ConnectionString = "Server=s1pc2\SQLEXPRESS; Initial Catalog=BdAlunos; Trusted_Connection=True"
  
        meuComando = New SqlCommand("Select Cod_Turma From Turmas", conexao)

            Try
                conexao.Open()
                meuDataReader = meuComando.ExecuteReader(System.Data.CommandBehavior.CloseConnection)
                cbbcodturma.DataSource = meuDataReader
                cbbcodturma.DataValueField = Cod_Turma 
                cbbcodturma.DataTextField = Descricao
                cbbcodturma.DataBind()
            Catch ex As Exception
            Finally
                conexao.Dispose()
                meuComando.Dispose()
            End Try

Tenta assim

Cumprimentos Paulo Silva

Share this post


Link to post
Share on other sites
rafaelsantos

Experimentei o .HasRows e funcionou.

Obrigado a ambos, duvida esclarecida, podem fechar.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.