Betotecno 0 Denunciar post Postado Setembro 11, 2008 Bom dia pessoal. Sou novo aqui no fórum e de programação. Você poderiam me ajudar? Tenho o seguinte código: if ((cracha != null) && (cracha != "")) { SqlConnection conexao = ChamaBanco(); dados = string.Concat("select * from cmello.RegistroPonto where dt_Registro BETWEEN '", dataInicio, "' and '", dataFim, "' and (cd_Cracha = '", cracha, "')"); SqlCommand comando = new SqlCommand(dados, conexao); SqlDataReader dr = null; dr = comando.ExecuteReader(); dr.Read(); DataTable table = new DataTable(); table.Load(dr); gridPonto.DataSource = table; Leitor(cracha, ref data, ref horaReg, dr); } else { MessageBox.Show("Informar o número do Cracha"); } } private static void Leitor(string cracha, ref string data, ref string horaReg, SqlDataReader dr) { while (dr != null) { [color="#0000FF"] cracha = dr["cd_Cracha"].ToString(); data = dr["dt_Registro"].ToString(); data = data.Substring(0, 2) + data.Substring(3, 2) + data.Substring(6, 4); horaReg = dr["dt_Registro"].ToString().Substring(11, 2) + dr["dt_Registro"].ToString().Substring(14, 2);[/color] StreamWriter arquivosaida = new StreamWriter("c:\\RP-SIGA.txt"); arquivosaida.WriteLine("1" + cracha + data + horaReg); arquivosaida.Close(); dr.Read(); } Mas dá o seguinte erro onde está marcado em azul: "Tentativa inválida de MetaData quando a leitora estava fechada." Alguém sabe o que aconteceu? Desde já agradeço. Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 11, 2008 Betotecno, Seja Bem Vindo ao Fórum iMasters, de uma olhada em nossas regras: Regras do Fórum iMasters Você colocou o dr.Read() no final do seu While, ele deve ser usado antes de você tentar ler qualquer valor do seu DataReader. O correto seria: private static void Leitor(string cracha, ref string data, ref string horaReg, SqlDataReader dr) { while (dr.Read()) { cracha = dr["cd_Cracha"].ToString(); data = dr["dt_Registro"].ToString(); data = data.Substring(0, 2) + data.Substring(3, 2) + data.Substring(6, 4); horaReg = dr["dt_Registro"].ToString().Substring(11, 2) + dr["dt_Registro"].ToString().Substring(14, 2); StreamWriter arquivosaida = new StreamWriter("c:\\RP-SIGA.txt"); arquivosaida.WriteLine("1" + cracha + data + horaReg); arquivosaida.Close(); } Abraços... Compartilhar este post Link para o post Compartilhar em outros sites
Betotecno 0 Denunciar post Postado Setembro 11, 2008 Betotecno, Seja Bem Vindo ao Fórum iMasters, de uma olhada em nossas regras: Regras do Fórum iMasters Você colocou o dr.Read() no final do seu While, ele deve ser usado antes de você tentar ler qualquer valor do seu DataReader. O correto seria: private static void Leitor(string cracha, ref string data, ref string horaReg, SqlDataReader dr) { while (dr.Read()) { cracha = dr["cd_Cracha"].ToString(); data = dr["dt_Registro"].ToString(); data = data.Substring(0, 2) + data.Substring(3, 2) + data.Substring(6, 4); horaReg = dr["dt_Registro"].ToString().Substring(11, 2) + dr["dt_Registro"].ToString().Substring(14, 2); StreamWriter arquivosaida = new StreamWriter("c:\\RP-SIGA.txt"); arquivosaida.WriteLine("1" + cracha + data + horaReg); arquivosaida.Close(); } Abraços... Oi Bruno, obrigado por responder. Deu certo, mas não estou conseguindo preencher o datagrid com os dados filtrados do banco de dados. Usei o SQL para filtrar e trazer os dados (para facilitar a vida), mas na hora de exibir não está trazendo. Na verdade ele só será exibido no grid e depois exportado para um arquivo de texto comum (.TXT) só que numa sequencia para outro programa poder puxar, isto é, no grid não aparece nada e no texto exportado aparece uma única linha, sendo que o filtro tem que apresentar mais do que 3 registros. Não sei se fui muito claro! rss if ((cracha != null) && (cracha != "")) { SqlConnection conexao = ChamaBanco(); dados = string.Concat("select * from cmello.RegistroPonto where dt_Registro BETWEEN '", dataInicio, "' and '", dataFim, "' and (cd_Cracha = '", cracha, "')"); SqlCommand comando = new SqlCommand(dados, conexao); SqlDataReader dr = null; dr = comando.ExecuteReader(); dr.Read(); while (dr.Read()) { cracha = dr["cd_Cracha"].ToString(); data = dr["dt_Registro"].ToString(); data = data.Substring(0, 2) + data.Substring(3, 2) + data.Substring(6, 4); horaReg = dr["dt_Registro"].ToString().Substring(11, 2) + dr["dt_Registro"].ToString().Substring(14, 2); StreamWriter arquivosaida = new StreamWriter("c:\\RP-SIGA.txt"); arquivosaida.WriteLine("1" + cracha + data + horaReg); arquivosaida.Close(); } DataTable table = new DataTable(); table.Load(dr); gridPonto.DataSource = table; }Um grande abraço Compartilhar este post Link para o post Compartilhar em outros sites
quintelab 91 Denunciar post Postado Setembro 11, 2008 De uma olhada neste link: http://www.codeproject.com/KB/database/DataGridPaging.aspx Abraços... Compartilhar este post Link para o post Compartilhar em outros sites