UPDATE ESTOQUE

JOHNSTEVE 15/02/2016 21:42:37
#457689
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
KERPLUNK 15/02/2016 23:16:38
#457690
Pra mim parece correto. Faça uma depuração passo a passo e verifique os valores antes de executar...
NICKOSOFT 16/02/2016 05:33:09
#457695
Resposta escolhida
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
PERCIFILHO 16/02/2016 07:31:17
#457696
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:

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
OMAR2011 16/02/2016 08:37:50
#457699
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.
MOUSER 16/02/2016 11:25:45
#457709
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;
JOHNSTEVE 16/02/2016 15:02:35
#457719
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