Fórum Atualizar valor em uma tabela Grid utilizando SqlDataReader #586722

14/10/2017

0

C#

Olá pessoal,

Sou um iniciante em programação. Estou desenvolvendo uma aplicação web utilizando Visual Studio 2016, c# e banco de dados SqlServer. Após implementação da classe abaixo em um controle de estoque, tive o seguinte erro:

- Declarar a classe @Quantidade (Não executa a linha: SqlDataReader dr = com.ExecuteReader();
Obs.: ***Não há erro de sintaxe.

Tenho uma tabela chamada CRUD.tblCalcado que possui 2 campos (´NomeCalcado´) com 1 registro (´Anabela por exemplo´) e outro campo denominado Quantidade .

Toda vez que ocorre uma venda, necessito que a variável Quantidade seja atualizada instantaneamente na tabela Grid que aparece no meu formulário de venda.

Preciso recuperar esse dado e atribuí-lo a uma variável do tipo int.

Tentei algumas soluções, porém sem êxito (O erro persiste)
Abaixo segue o código implementado.

Agradeço antecipadamente e toda ajuda será bem vinda.





private void CARREGAR(string caixa)
{
try
{
sqlcon = new SqlConnection(strCon);
da = new SqlDataAdapter(caixa, sqlcon);
datatable = new DataTable();
da.Fill(datatable);
datatable.Columns[0].ColumnName = "Nome do Calçado";
datatable.Columns[1].ColumnName = "Quantidade";

dataGridView1.DataSource = datatable;

}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

}

private void btn_Atualizar_Quantidade (object sender, EventArgs e)
{
strSql = "update CRUD.tblCalcado set Quantidade = Quantidade - @Quantidade where NomeCalcado = @NomeCalcado";
sqlcon = new SqlConnection(strCon);
SqlCommand com = new SqlCommand(strSql, sqlcon);

com.Parameters.Add("@NomeCalcado", SqlDbType.VarChar).Value = (txt_modelo.Text);
com.Parameters.Add("@Quantidade", SqlDbType.Int).Value = Int.Parse(txt_quantidade.Text); // a variável "@Quantidade" está declarada aqui!.

try
{
sqlcon.Open();
com.ExecuteNonQuery();
MessageBox.Show("VENDA REALIZADA COM SUCESSO!");
}

catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

finally
{
sqlcon.Close();
ATUALIZAR();
}

public void ATUALIZAR()
{
strCon = "select NomeCalcado, Quantidade from CRUD.tblCalcado order by NomeCalcado ASC";
SqlCommand com = new SqlCommand(strSql, sqlcon);
sqlcon.Open();


SqlDataReader dr = com.ExecuteReader(); // O erro ocorre aqui*** e solicita que seja declarada a variável "@Quantidade"

DataTable datatable = new DataTable();
datatable.Load(dr);
dataGridView1.DataSource = datatable;
}
Vanderlei Lino

Vanderlei Lino

Responder

Posts

16/10/2017

Fabiano Carvalho

Voce está declarando a variavel "com" duas vezes, sobretudo, a consulta que imagino que você queira executar no final do código é da variavel strCon e não da váriavel strSql.+

Está bem confuso o código.
Responder

Gostei + 0

19/10/2017

Vanderlei Lino

Fabiano, agradeço pela cooperação!

Deixa eu te explicar. O controle acima, exatamente como está aí, funciona com o Visual Studio 12 e não funciona com o Visual 16. No Visual 12 não ocorre o erro (ou seja, o código não pede para declarar a variável @quantidade.

Será um bug do Visual Studio. Eu reproduzi o mesmo código nas 02 versões!!!
Responder

Gostei + 0

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

Aceitar