UPDATE ESTOQUE
Falam Galerinha. Bom dia, Boa Tarde, Boa Noite se for o caso :)
Estou com um pequeno problema no meu Update, tipo!
uso um Datagrid. e uns textbox. onde eu digito nos textbox e adiciono no GRid. . dae qnd eu adiciono [Ô]1[Ô] Item indepentente de quantas quantidades . ate ai tudo bem. faz o update correto. mas...
quando eu adiciono varios itens [Ô]1[Ô],[Ô]2[ô][Ô],3[Ô].... com qtd variadas. meu Update se comporta da seguinte forma. ele pega o ultimo q eu adicionei e sai fazendo o mesmo para os restantes dai qnd vou no banco ta os itens com as mesmas quantidades..
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String
Dim cmd As OleDbCommand
Dim intEntradaProduto As Decimal
For j = 0 To dgvProdutos.Rows.Count - 1
intEntradaProduto = CDec(txtSaldoEstoque.Text) + CDec(dgvProdutos.Rows(j).Cells(7).Value.ToString())
sql = [Ô]UPDATE produtos SET qtdEstoque=@qtdEstoque WHERE ((codigo=@codigo))[Ô]
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@qtdEstoque[Ô], intEntradaProduto)) [ô], OleDbType.Decimal))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@codigo[Ô], dgvProdutos.Rows(j).Cells(16).Value.ToString())) [ô], OleDbType.Integer))
cmd.ExecuteNonQuery()
Next
MsgBox([Ô]Update do estoque gravado com sucesso.[Ô], MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Using
Estou com um pequeno problema no meu Update, tipo!
uso um Datagrid. e uns textbox. onde eu digito nos textbox e adiciono no GRid. . dae qnd eu adiciono [Ô]1[Ô] Item indepentente de quantas quantidades . ate ai tudo bem. faz o update correto. mas...
quando eu adiciono varios itens [Ô]1[Ô],[Ô]2[ô][Ô],3[Ô].... com qtd variadas. meu Update se comporta da seguinte forma. ele pega o ultimo q eu adicionei e sai fazendo o mesmo para os restantes dai qnd vou no banco ta os itens com as mesmas quantidades..
Using con As OleDbConnection = GetConnection()
Try
con.Open()
Dim sql As String
Dim cmd As OleDbCommand
Dim intEntradaProduto As Decimal
For j = 0 To dgvProdutos.Rows.Count - 1
intEntradaProduto = CDec(txtSaldoEstoque.Text) + CDec(dgvProdutos.Rows(j).Cells(7).Value.ToString())
sql = [Ô]UPDATE produtos SET qtdEstoque=@qtdEstoque WHERE ((codigo=@codigo))[Ô]
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@qtdEstoque[Ô], intEntradaProduto)) [ô], OleDbType.Decimal))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@codigo[Ô], dgvProdutos.Rows(j).Cells(16).Value.ToString())) [ô], OleDbType.Integer))
cmd.ExecuteNonQuery()
Next
MsgBox([Ô]Update do estoque gravado com sucesso.[Ô], MsgBoxStyle.Information)
Catch ex As Exception
MsgBox(ex.Message)
Finally
con.Close()
End Try
End Using
Pra mim parece correto. Faça uma depuração passo a passo e verifique os valores antes de executar...
Apenas o saldo em estoque vc nao esta mudando, sempre preso em um txtsaldoestoque, e nao pegando o real saldo de cada item
Depende o bd pode ser esse monte de parenteses na query cause algo depois do where nao precisa os parenteses menos ainda serem duplos
Depende o bd pode ser esse monte de parenteses na query cause algo depois do where nao precisa os parenteses menos ainda serem duplos
Pra mim, acho que está errado o bloco For ... Next
Você não está atualizando o valor do saldo. Depois de gravar no BD o valor da entrada do produto, você não está somando o valor da entrada com o saldo atual.
Eu faria mais ou menos assim:
Talvez não seja bem assim, mas não tenho como testar agora.
Qualquer coisa, estamos aÃ. Espero ter ajudado
Você não está atualizando o valor do saldo. Depois de gravar no BD o valor da entrada do produto, você não está somando o valor da entrada com o saldo atual.
Eu faria mais ou menos assim:
intEntradaProduto = CDec(txtSaldoEstoque.Text)
For j = 0 To dgvProdutos.Rows.Count - 1
intEntradaProduto += CDec(dgvProdutos.Rows(j).Cells(7).Value.ToString())
sql = [Ô]UPDATE produtos SET qtdEstoque=@qtdEstoque WHERE ((codigo=@codigo))[Ô]
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@qtdEstoque[Ô], intEntradaProduto)) [ô], OleDbType.Decimal))
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@codigo[Ô], dgvProdutos.Rows(j).Cells(16).Value.ToString())) [ô], OleDbType.Integer))
cmd.ExecuteNonQuery()
Next
Talvez não seja bem assim, mas não tenho como testar agora.
Qualquer coisa, estamos aÃ. Espero ter ajudado
Seu código funciona, porém está amarrado ao textbox com o NICKOSOFT comentou.
Não vai dar certo.Selecione a linha e altera com o valor do textbox, ai faz o update.
Não vai dar certo.Selecione a linha e altera com o valor do textbox, ai faz o update.
Os valores da textbox, voce pode colocar em varias variaveis e de acordo com o cod voce vai adicionando a variavel correta, Por exemplo, produto 1 recebe o cod 1 e atualiza o estoque 1 com o valor 1 , produto 2 recebe cod 2 e atualiza estoque 2 com o valor 2 e assim adiante até o fim do laço. Ao invés de usar a textbox, usar a variavel estoque e variavel cod amarrado com cod do banco de dados do produto e o estoque do produto no banco tambem;
Citação::
Apenas o saldo em estoque vc nao esta mudando, sempre preso em um txtsaldoestoque, e nao pegando o real saldo de cada item
Depende o bd pode ser esse monte de parenteses na query cause algo depois do where nao precisa os parenteses menos ainda serem duplos
Citação::
Seu código funciona, porém está amarrado ao textbox com o NICKOSOFT comentou.
Não vai dar certo.Selecione a linha e altera com o valor do textbox, ai faz o update.
Verdade BRown deu certo aqui, tava amarrado no textbox. vlw deu certo. muito obrigado galera firmeza
Obrigado tbm galera por um tempinho em poder me ajudar :) vlw mesmo
Tópico encerrado , respostas não são mais permitidas