Baixa no Estoque C SHARP
Olá, tenho o código abaixo para dar baixa no estoque, de itens que são inseridos em um DataGridview, como são livros a quantidade a ser baixada é sempre um de cada...
Coloco o método BaixaEstoque() no botão salvar, mas com este código ele baixa tudo somente do primeiro item do grid, por exemplo se são inseridos três livros no grid a baixa é feita de três no estoque do primeiro livro e dos outros não baixa nada, alguém pode ajudar ?
Desde já agradeço.
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160108-163138.png[/img]
Coloco o método BaixaEstoque() no botão salvar, mas com este código ele baixa tudo somente do primeiro item do grid, por exemplo se são inseridos três livros no grid a baixa é feita de três no estoque do primeiro livro e dos outros não baixa nada, alguém pode ajudar ?
Desde já agradeço.
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160108-163138.png[/img]
public void BaixaEstoque()
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb;Jet OLEDB:Database Password = grazi1vini2");
if (MessageBox.Show("Confirma a Baixa dos Itens ?", "Atenção", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
{
return;
}
try
{
int i = 0;
OleDbCommand comando = new OleDbCommand("UPDATE Estoque SET Saída = Saída + 1 WHERE IDLivro =" + itemLocacaoDataGridView.Rows[i].Cells["IDLivro"].Value.ToString(), conexao);
conexao.Open();
for (i = 0; i <= itemLocacaoDataGridView.RowCount - 1; i++)
{
int codigo;
int.TryParse(itemLocacaoDataGridView.Rows[i].Cells["IDLivro"].Value.ToString(), out codigo);
comando.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show("Erro !" + ex, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conexao.Close();
}
}
Jair Souza
Curtidas 0
Melhor post
Raylan Zibel
08/01/2016
try {
conexao.Open();
for (i = 0; i <= itemLocacaoDataGridView.RowCount - 1; i++) {
OleDbCommand comando = new OleDbCommand("UPDATE Estoque SET Saída = Saída + 1 WHERE IDLivro = " + itemLocacaoDataGridView.Rows[i].Cells["IDLivro"].Value.ToString(), conexao);
comando.ExecuteNonQuery();
}
} catch (Exception ex) {
MessageBox.Show("Erro !" + ex, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
} finally {
conexao.Close();
}
GOSTEI 1
Mais Respostas
Jair Souza
08/01/2016
Valeu, Muito Obrigado !
Está baixando corretamente agora.
Está baixando corretamente agora.
public void BaixaEstoque()
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb;Jet OLEDB:Database");
try
{
conexao.Open();
for (int i = 0; i <= itemLocacaoDataGridView.RowCount - 1; i++)
{
OleDbCommand comando = new OleDbCommand("UPDATE Estoque SET Saída = Saída + 1 WHERE IDLivro = " + itemLocacaoDataGridView.Rows[i].Cells["IDLivro"].Value.ToString(), conexao);
comando.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show("Erro !" + ex, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conexao.Close();
}
}GOSTEI 0
Jair Souza
08/01/2016
Olá, tenho mais uma dúvida...é para dar a entrada, no form de Devolução, com o método abaixo está dando entrada correta se marcar uma só linha, se marcar todos está duplicando a entrada(em vez de entrar um livro de cada entra dois de cada no estoque), sabes o que precisa ser ajustado ?
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160110-210750.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160110-210750.png[/img]
public void entradaEstoque()
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb;Jet OLEDB:Database Password = grazi1vini2");
try
{
conexao.Open();
for (int i = 0; i <= itemLocacaoDataGridView.RowCount - 1; i++)
{
if (Convert.ToBoolean(itemLocacaoDataGridView.Rows[i].Cells[0].Value) == true)
{
OleDbCommand comando = new OleDbCommand("UPDATE Estoque SET Entrada = Entrada + 1 WHERE IDLivro = " + itemLocacaoDataGridView.Rows[i].Cells["IDLivro"].Value.ToString(), conexao);
comando.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
MessageBox.Show("Erro !" + ex, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conexao.Close();
}
}GOSTEI 0
Raylan Zibel
08/01/2016
"IDLivro" é a chave primária da tabela ou é uma chave estrangeira?
GOSTEI 0
Jair Souza
08/01/2016
O IDLivro é a chave estrangeira na tabela Estoque.
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160111-133339.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160111-133339.png[/img]
GOSTEI 0
Jair Souza
08/01/2016
Olá, tenho mais uma dúvida...é para dar a entrada, no form de Devolução, com o método abaixo está dando entrada correta se marcar uma só linha, se marcar todos está duplicando a entrada(em vez de entrar um livro de cada entra dois de cada no estoque), sabes o que precisa ser ajustado ?
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160110-210750.png[/img]
[img]http://arquivo.devmedia.com.br/forum/imagem/343353-20160110-210750.png[/img]
public void entradaEstoque()
{
OleDbConnection conexao = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + Application.StartupPath + "\\BDBiblioteca.mdb;Jet OLEDB:Database Password = grazi1vini2");
try
{
conexao.Open();
for (int i = 0; i <= itemLocacaoDataGridView.RowCount - 1; i++)
{
if (Convert.ToBoolean(itemLocacaoDataGridView.Rows[i].Cells[0].Value) == true)
{
OleDbCommand comando = new OleDbCommand("UPDATE Estoque SET Entrada = Entrada + 1 WHERE IDLivro = " + itemLocacaoDataGridView.Rows[i].Cells["IDLivro"].Value.ToString(), conexao);
comando.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
MessageBox.Show("Erro !" + ex, "Atenção", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
conexao.Close();
}
}Alguém tem alguma ajuda ?
GOSTEI 0