Usuário com melhor resposta
Erro imposivel ler reader vazio

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
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
Todas as 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