Fórum Atualizar valor em uma tabela Grid utilizando SqlDataReader #586722
14/10/2017
0
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;
}
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
Curtir tópico
+ 0
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.
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!!!
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
Clique aqui para fazer login e interagir na Comunidade :)