Array
(
    [0] => stdClass Object
        (
            [Votos_Balanceados] => 1
            [id] => 541933
            [titulo] => Baixa no Estoque C SHARP
            [dataCadastro] => DateTime Object
                (
                    [date] => 2016-01-08 16:59:45
                    [timezone_type] => 3
                    [timezone] => America/Sao_Paulo
                )

            [isFirstPost] => -1
            [idUsuario] => 244662
            [status] => A
            [isExample] => 
            [NomeUsuario] => Raylan Zibel
            [Apelido] => raylan
            [Foto] => 244662_20160409164349.png
            [Conteudo] => [code]
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();
}
[/code] ) )

Baixa no Estoque C SHARP

Jair Souza
   - 08 jan 2016

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.
Clique na imagem para abrir em uma nova janela

#Código

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();
            }
        }

Post mais votado

Raylan
|
MVP
Pontos: 690
    08 jan 2016

#Código

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();
}

Jair Souza
   - 09 jan 2016

Valeu, Muito Obrigado !
Está baixando corretamente agora.

#Código

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();
            }
        }

Jair Souza
   - 10 jan 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 ?

Clique na imagem para abrir em uma nova janela

#Código

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();
            }
        }

Raylan
|
MVP
Pontos: 690
    11 jan 2016

"IDLivro" é a chave primária da tabela ou é uma chave estrangeira?

Jair Souza
   - 11 jan 2016

O IDLivro é a chave estrangeira na tabela Estoque.

Clique na imagem para abrir em uma nova janela

Jair Souza
   - 12 jan 2016


Citação:
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 ?

Clique na imagem para abrir em uma nova janela

#Código

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 ?