QUANTIDADE CORRETA DO ESTOQUE
na campo [Ô]quantidade[Ô] da tabela de Produtos eu deixei como [txt-color=#e80000] Decimal - 2 casas [/txt-color]
e no meu update logo abaixo. tbm convertei para decimal.
Dim intEntradaProduto As Decimal
For j = 0 To dgvProdutos.Rows.Count - 1
sql = [Ô]SELECT codigo,qtdEstoque from produtos where codigo=?[Ô]
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@codigo[Ô], dgvProdutos.Rows(j).Cells(18).Value.ToString())) [ô]COD.PRODUTO
dr = cmd.ExecuteReader
If dr.HasRows Then
dr.Read()
If Not IsDBNull(dr.Item([Ô]qtdEstoque[Ô])) Then Estoque_Baixa = dr.Item([Ô]qtdEstoque[Ô])
intEntradaProduto = Format(CDec(Estoque_Baixa) + Format(CDec(dgvProdutos.Rows(j).Cells(20).Value.ToString())))
sql = [Ô]UPDATE produtos SET qtdEstoque=@qtdEstoque WHERE ((codigo=@codigo))[Ô]
cmd = New OleDbCommand(sql, con)
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@qtdEstoque[Ô], intEntradaProduto)) [ô]Resultado
cmd.Parameters.Add(New OleDb.OleDbParameter([Ô]@codigo[Ô], dgvProdutos.Rows(j).Cells(18).Value.ToString())) [ô]COD.PRODUTO
cmd.ExecuteNonQuery()
Else
O problema foi o seguinte.
o cliente tava cadastrando uns itens por Kilo Exemplo: 2,5Kg de Carnê.....
daêh qnd fui olhar o estoque. nao tava salvando correto como Kilo. ficou [txt-color=#e80000] 25 [/txt-color]
ta salvando por inteiro. e nao por decimal..
vcs tem alguma ideia qual a maneira correta de salvar a [txt-color=#e80000] Quantidade do Estoque [/txt-color]
Você já está estudando OOP, aplique-a.
Quanto ao seu problema, tenho quase certeza que é nesta linha:
intEntradaProduto = Format(CDec(Estoque_Baixa) + Format(CDec(dgvProdutos.Rows(j).Cells(20).Value.ToString())))
Depure o código e veja o valor de [Ô]intEntradaProduto[Ô].
Citação::
Estoque... é um dos conceitos mais difÃceis de entender para muitos programadores, mesmo alguns já experientes. [Ô]Quantidade no estoque[Ô], não é um campo de produto. Quantidade, não é uma propriedade de produto. Estoque consiste em entradas e saÃdas. A soma das entradas, menos a soma das saÃdas é a quantidade. é assim que deve ser, se você não está fazendo assim, tenho péssimas notÃcias pra você...
Você já está estudando OOP, aplique-a.
Quanto ao seu problema, tenho quase certeza que é nesta linha:
intEntradaProduto = Format(CDec(Estoque_Baixa) + Format(CDec(dgvProdutos.Rows(j).Cells(20).Value.ToString())))
Depure o código e veja o valor de [Ô]intEntradaProduto[Ô].
é nessa Linha Kerplunk
Debuguei. e esta ficando assim. no campos la no form
2,5 kg de carne. estoque atual 0
dae qnd chega nessa linha ta ficando a variavel
2.5 e qnd salva... ta salvando 25
tudo decimal.
dae o resultado na variavel ficou 2.5
e qns salva.. no banco fica 25
Imagine um banco de dados com várias movimentações de entrada e saida do produto, como executar uma query que traga o estoque atualizado em uma listagem de produtos por grupo por exemplo, sem deixar essa pesquisa lenta?
eu testei aqui tudo do Tipo String.. no banco de dados Mudei de [txt-color=#e80000] Decimal [/txt-color] para [txt-color=#e80000] String [/txt-color]
e na variavel tbm mudei .. dae. converteii apenas depois da soma. convertei para decimal... depois da soma e antes de gravar ..
funcionou.
veja
se tiver correto acabei de solucionar.
ou ficaria assim --------> 1.001,5 <--------------
Citação::
Kerplunk fiz uma gambiarra nem sei se é o certo, mais funcionou deu certo .
eu testei aqui tudo do Tipo String.. no banco de dados Mudei de [txt-color=#e80000] Decimal [/txt-color] para [txt-color=#e80000] String [/txt-color]
e na variavel tbm mudei .. dae. converteii apenas depois da soma. convertei para decimal... depois da soma e antes de gravar ..
funcionou.
veja
Não, não funcionou, você apenas deixou seu campo de quantidade inútil para cálculos.
Citação::
deixa eu pegar um gancho nessa conversa ai. KERP creio que estou fazendo do método errado como diz você, mais analisando aqui alguns querys sql que uso, surgiu uma duvida:
Imagine um banco de dados com várias movimentações de entrada e saida do produto, como executar uma query que traga o estoque atualizado em uma listagem de produtos por grupo por exemplo, sem deixar essa pesquisa lenta?
Pesquisas mais complexas, devem sempre ser transformadas em views, ainda mais quando o uso delas é frequente e desempenho é exigido. De preferência, views indexadas, cuja performance é de cair o queixo quando as tabelas estão estruturadas corretamente e a query bem feita. é muito raro ver um sistema profissional executando JOINS de dentro da aplicação, se tem mais de uma tabela envolvida, é praticamente certo que uma view será criada e geralmente, indexada. O problema é que nem todos os bancos de dados trabalham bem com isso ou mesmo sequer possuem esse recurso. Com o SQL Server, fica um foguete.