none
Erro imposivel ler reader vazio RRS feed

  • Pergunta

  • Boa noite, tenho um codigo que precisa puxar uma chamada cadastrada a partir do dia que foi realizado a chamada e a também da sala na qual ela fora realizada. Na tela temos o nome do aluno da sala, que é preenchido, so que na txt de presença ou ausencia nao e preenchida(acho que ai é que esta o erro) Tela:

    e o seguinte codigo

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    
    namespace Apresentacao
    {
        public partial class FrmRelatorioChamadaDia : Form
        {
            string connectionString = @"Server=.\sqlexpress;Database=DB_AcademicControle;Trusted_Connection=True;";
            //string connectionString = @"Server=AMARAL\SQLEXPRESS;Database=DB_AcademicControl;Trusted_Connection=True;";
            // variaveis e vetores:
            int codigoSala;
            int j = 0;
            int p = 0;
            int[] codAluno = new int[50];
            int[] pre = new int[50];
    
            public FrmRelatorioChamadaDia()
            {
                InitializeComponent();
            }
    
            private void FrmRelatorioChamadaDia_Load(object sender, EventArgs e)
            {
                SqlConnection CN = new SqlConnection(connectionString);
    
                //Cria um dataadapter para receber o select do banco de dados
    
    
                try
                {
                    SqlDataAdapter da = new SqlDataAdapter("select nome_sala,cod_salas from salas order by nome_sala asc", CN);
    
                    //cria um datatable
                    DataTable dt = new DataTable();
                    //Faz um fill dos dados do DataAdapter para o DataTable
                    da.Fill(dt);
                    //Fonte de dados do Combobox recebe o datatable
                    this.cbSala.DataSource = null;
                    this.cbSala.DataSource = dt;
                    //DisplayMember = recebe o nome que está no banco de dados
                    this.cbSala.DisplayMember = "NOME_SALA";
                    //ValueMember = recebe o código e guarda internamente em cada item do combobox.
                    this.cbSala.ValueMember = "COD_SALAS";
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro: " + ex.ToString());
                }
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                panel3.Enabled = true;
    
                //READER BUSCA SALA e preenche o combobox salas
                SqlConnection con2 = new SqlConnection(connectionString);
                SqlCommand cmd2 = new SqlCommand("uspBuscaSalaAluno", con2);
                cmd2.Parameters.AddWithValue("cod_salafk", cbSala.SelectedValue);
                cmd2.CommandType = CommandType.StoredProcedure;
                SqlDataReader reader2;
                con2.Open();
    
                try
                {
                    reader2 = cmd2.ExecuteReader();
    
                    while (reader2.Read())
                    {
                        codAluno[j] = Convert.ToInt32(reader2[0]);
                        lbNomeAluno.Items.Add(reader2[1].ToString());
                        j = j + 1;
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Erro: " + ex.ToString());
                }
                finally
                {
                    con2.Close();
                }
                //FIM READER BUSCA SALA
    
                //INICIO READER CHAMADA, E INSERE OS DADOS NA TABELA CHAMADA
                SqlConnection con3 = new SqlConnection(connectionString);
    
    
    
                for (int p = 0; p < lbNomeAluno.Items.Count; p++)
                {
                    SqlCommand cmd3 = new SqlCommand("uspRelatorioChamadaDia", con3);
                    cmd3.Parameters.AddWithValue("@COD_ALUNO", codAluno[p]);
                    MessageBox.Show(dateTimePicker1.Value.ToString());
    
                    cmd3.Parameters.AddWithValue("@DATA_CHAMADA",dateTimePicker1.Value.ToString());
                    cmd3.CommandType = CommandType.StoredProcedure;
                    SqlDataReader reader3;
                    con3.Open();
    
                    try
                    {
                        reader3 = cmd3.ExecuteReader();
    
                        pre[p] = Convert.ToInt32(reader3[0]);
                        MessageBox.Show(pre[p].ToString());
                        if (pre[p] == 0)//ausente
                        {
                            lbpresenca.Items.Add("Ausente");
                        }
                        else//presente
                        {
                            lbpresenca.Items.Add("Presente");
                        }
    
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show("Erro: " + ex.ToString());
                    }
                    finally
                    {
                        con3.Close();
                    }
    
                }
            }
    
            private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
            {
                panel3.Enabled = true;
                button1.Enabled = true;
            }
        }
    }
    

    o poblema e que, sempre quando clicko no buscar ele me diz que meu reader esta vazio, nao faço ideia de onde vem este erro.

    uspBuscaSalaAluno = Select COD_ALUNOS,NOME_ALUNO  from ALUNOS where COD_SALASFK = @cod_salafk

    uspRelatorioChamadaDia =  SELECT VERIFICACAO FROM CHAMADAS WHERE COD_ALUNOFK = @COD_ALUNO AND DATA_CHAMADA = @DATA_CHAMADA

    Ja estou a dia tentando resolvelo, alguma ajuda?

    Obrigado desde ja ! :D

    domingo, 14 de junho de 2015 02:19

Respostas

  • Bom dia

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por favor, abra uma nova thread.

    Ótimo dia.

    Abraços

    • Marcado como Resposta Cristopher C I_ sexta-feira, 19 de junho de 2015 14:28
    sexta-feira, 19 de junho de 2015 14:25

Todas as Respostas

  • que tipo de erro gera?

    A flower cannot blossom without sunshine, and man cannot live without love.

    terça-feira, 16 de junho de 2015 13:09
    Moderador
  • Bom dia

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por favor, abra uma nova thread.

    Ótimo dia.

    Abraços

    • Marcado como Resposta Cristopher C I_ sexta-feira, 19 de junho de 2015 14:28
    sexta-feira, 19 de junho de 2015 14:25