GARANTIR DESCONTO

Fórum erro com field count #13643

06/01/2010

0

Olá,   eu tento executar um metodo para atualizar uma tabela, mas dá o erro:   Tentativa inválida de chamar FieldCount quando o leitor estava fechado.   O código do método é esse:   public void DesmarcarCampanha(GridView grade) { Conexao = new SqlConnection(StrConexao.ConnectionString); Conexao.Open(); foreach (GridViewRow row in grade.Rows) { int coluna = 8; if (row.Cells[coluna].Text == "Sim") { Comando = new SqlCommand("UPDATE OrdensServico SET marcadoimpressao = NULL", Conexao); Comando.ExecuteNonQuery(); } grade.DataBind(); } Conexao.Close(); }
João Teixeira

João Teixeira

Responder

Posts

06/01/2010

Luiz Maia

Ola João,   DataReader é forward-only/read-only e trabalha conectado no banco, se você fechar a conexão, o datareader se torna inválido.
quando você fez o finally abaixo, você fechou a conexão.
Conexao.Close();

Faça assim na sua aplicação final:

using(SqlDataReader BuscaRG = ExecutaStringSQL.RetornarDataReader("select top 1 * from senha "))
{
if (BuscaRG.Read())
Label1.Text = BuscaRG.GetString(0);
}O using vai assegurar que sua conexão feche sozinho e volte ao pool.
    Abraços Att Luiz Maia  
Responder

Gostei + 0

06/01/2010

João Teixeira

O erro aponta para a linha grade.databind();   e eu não estou usando datareader.   eu tenho um gridview numa webform que, ao ser carregada, deve exibir o gridview preenchido com as informações atualizadas pelo metodo onde dá o erro.
Responder

Gostei + 0

06/01/2010

Luiz Maia

João,   O que realmente precisa fazer? Seu código esta me parecendo um pouco estranho, para que passar o GridView como parametro?
Responder

Gostei + 0

06/01/2010

João Teixeira

Bem, é o seguinte:   tenho um gridview que é preenchido quando a página é carregada. este médoto serve para verificar quais registros estão marcados e quais não estão.   os que estiverem marcados com "Sim" eu substituo e deixo o campo vazio. é isso que o método faz. eu uso a grid para ter a referencia das rows desta grid.   este webform serve para eu selecionar quais registros eu quero imprimir. aí quando eu clico num botão "emitir OS" ele pega os registros que estão com o valor "Sim" e exibe em outra tela para impressao.   Este método que eu postei aqui eu utilizo para "limpar" a lista que já tinha vários marcados anteriormente.
Responder

Gostei + 0

07/01/2010

Luiz Maia

João, Não se passa um GridView por parametro para um método.
O que vc esta tentando fazer não funciona. Primeiramente, aconselho vc a dividir seu projeto em camadas, pelo menos duas, com a Interface e outra com Acesso a Dados. Dai, faça um método genérico para popular o gridView, assim você o invoca sempre que precisar, veja um exemplo que fiz´para vc abaixo: http://video.devmedia.com.br/discovirtual/200237/Joao.zip Aqui tenho meu WebForm Obra.aspx e seu codigo Obra.aspx.cs, onde se encontram as regras de negocio, ele acessa uma outra camada onde se encontra o arquivo Obra.cs (uma classe), esta classe faz acessos ao Banco de Dados usando uma SuperClasse.   Qualquer dúvida, me pergunte ok? Tente começar seus projetos já usando Boas Práticas de desenvolvimento, assim não surgirão problemas mais complexos pela frente e ficará muito mais fácil dar manutenção.   Abraços Att Luiz Maia
Responder

Gostei + 0

17/01/2010

Luiz Maia

E ai João, como esta indo?   Aguardo Abraços Att Luiz Maia
Responder

Gostei + 0

18/01/2010

João Teixeira

Não se passa um GridView por parametro para um método.
O que vc esta tentando fazer não funciona. Primeiramente, aconselho vc a dividir seu projeto em camadas, pelo menos duas, com a Interface e outra com Acesso a Dados. Dai, faça um método genérico para popular o gridView, assim você o invoca sempre que precisar, veja um exemplo que fiz´para vc abaixo: Olá,   Na verdade temos utilizados os métodos recebendo os controles do webform como parametros e tem funcionado.   O problema é que o sistema já se iniciou com o código meio desorganizado, e acho que vai ficar difícil colocá-lo em camadas mais organizadas.   Vou dar uma olhada no seu exemplo, (a parte de design nao abre pois não tenho o arquivo de masterpage.) e vou fazer alguns testes.   Depois te dou um retorno.
Responder

Gostei + 0

18/01/2010

Luiz Maia

Ok Koão, fico no aguardo. Qualquer dúvida que tiver me diga, ok?   Abraços Att Luiz Maia
Responder

Gostei + 0

27/01/2010

João Teixeira

Olá, Consegui resolver esta questão.   Obrigado.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar