Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

kdhlinha

Problema com datagrid

Recommended Posts

Ola!!

Eu to com o seguinte erro:

eu fis uma consulta sql e depois joguei o resultado num datagrid, acontece que antes funcionava, mas dai eu tive de refazer o BD e paro de funcionar

olhem meu codigo:

 

E outra coisa, eu to tentando jogar somente uma coluna da tabela que seria a coluna Data, mas acontece que da o seguinte erro:

There is already an open DataReader associated with this Connection which must be closed first.
//Recebe conteudo de titulo numa querystring 	 string Titulo; 	 Titulo = Request.QueryString ["Titulo"]; 	 this.lbltitulo.Text = Titulo; 	 //faz a colsulta no DB filtrando por titulo 	 string sql="Select*FROM RELATORIOS WHERE Titulo LIKE '" + Titulo + "'"; 	 this.connRelatorios.Open (); 	 SqlCommand cmd = new SqlCommand (sql,connRelatorios); 	 dr=cmd.ExecuteReader (); 	 dr=null; 	 try 	 {    dr = cmd.ExecuteReader ();    this.dtgRelatorio.DataSource = dr;    this.dtgRelatorio.DataBind ();    if (dr.Read ())    {   	 this.lblData.Text = dtsPagRelatorios.Tables["RELATORIOS"].Rows[0]["data"].ToString();   	 //this.lblData.Text = dr["data"].ToString ();    }    else    {   	 this.lblData.Text = "//";    } 	 } 	 catch(Exception ex) 	 {    this.lblData.Text = "Ocorreu o seguinte erro" + ex.Message +"durante a execução!!"; 	 }

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, você está executando o DataReader antes do try e dentro dele... remove o q está antes... q vai funcionar!!ok?Att,Carlos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola Carlos!!

 

Agora funciono o datagrid, mas eu ainda naum conssegui jogar o valor do campo Data da tabela no meu label, ele da o seguinte erro

Invalid attempt to read when no data is present.
olha meu codigo como fico!!

 private void Page_Load(object sender, System.EventArgs e)  { 	 //Recebe conteudo de titulo numa querystring 	 string Titulo; 	 Titulo = Request.QueryString ["Titulo"]; 	 this.lbltitulo.Text = Titulo; 	  	 //faz a colsulta no DB filtrando por titulo 	 string sql="Select*FROM RELATORIOS WHERE Titulo LIKE '" + Titulo + "'"; 	 this.connRelatorios.Open (); 	 cmd = new SqlCommand (sql,connRelatorios); 	 dr=cmd.ExecuteReader (); 	 try 	 {    this.dtgRelatorio.DataSource = dr;    this.dtgRelatorio.DataBind ();    this.lblData.Text = dr["Data"].ToString (); 	  	 } 	 catch(Exception ex) 	 {    this.lblRelatorios.Text = "Ocorreu o seguinte erro " + ex.Message; 	 } 	 dr.Close(); 	 connRelatorios.Close ();

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente fazer assim

 

private void Page_Load(object sender, System.EventArgs e) {  //Recebe conteudo de titulo numa querystring  string Titulo;  Titulo = Request.QueryString ["Titulo"];  this.lbltitulo.Text = Titulo;    //faz a colsulta no DB filtrando por titulo  string sql="Select*FROM RELATORIOS WHERE Titulo LIKE '" + Titulo + "'";  this.connRelatorios.Open ();  cmd = new SqlCommand (sql,connRelatorios);  dr=cmd.ExecuteReader ();  try  {   if(dr.Read())   {       this.dtgRelatorio.DataSource = dr;       this.dtgRelatorio.DataBind ();       this.lblData.Text = dr["Data"].ToString ();    }  }  catch(Exception ex)  {   this.lblRelatorios.Text = "Ocorreu o seguinte erro " + ex.Message;  }  dr.Close();  connRelatorios.Close ();

Compartilhar este post


Link para o post
Compartilhar em outros sites

O Read() prepara o DataReader para leitura... o Datareader fica "bloqueado" para leitura enquanto você não usar o Read() para atribuir valores aos controles diretamente... só avisando q essa explicação é do q eu entendi q acontece.. ok???

 

agora tente assim:

private void Page_Load(object sender, System.EventArgs e){ //Recebe conteudo de titulo numa querystring string Titulo; Titulo = Request.QueryString ["Titulo"]; this.lbltitulo.Text = Titulo;  //faz a colsulta no DB filtrando por titulo string sql="Select*FROM RELATORIOS WHERE Titulo LIKE '" + Titulo + "'"; this.connRelatorios.Open (); cmd = new SqlCommand (sql,connRelatorios); dr=cmd.ExecuteReader (); try {      this.dtgRelatorio.DataSource = dr;      this.dtgRelatorio.DataBind ();      this.lblData.Text = this.dgIdiomas.Items[0].Cells[0].Text;      //No Items[] coloque o indice da linha q você quer pegar do DataGrid     //No Cells[] coloque o indice do campo que contém a Data no DataGrid... } catch(Exception ex) {  this.lblRelatorios.Text = "Ocorreu o seguinte erro " + ex.Message; } dr.Close(); connRelatorios.Close ();

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.