UPDATE EM VARIAS LINHAS- COM CRITERIO

STEVE 21/10/2010 17:24:06
#355639
Caros,

Boa tarde

Estou desenvolvendo um pequeno sistema de estoque, como exigência de projeto preciso salvar em cada entrada de estoque um percentual que será usado na margem de calculo de preço. Até ai tudo bem porem, preciso atualizar os registros já existentes com esta nova margem atribuida.

Ex
qtd: desc margem
5 Produto 1 50% (uma entrada já existente)

após o insert de um produto com margem de 35 preciso minha tabela assim
5 Produto 1 35% (entrada já existente)
3 Produto 1 35% (Nova entrada realizada)

Acontece que quando eu ponho um criterio no update a minha atualização vai apenas para o ultimo registro...

Alguma idéia do que fazer?

Segue o código que uso no insert e no update

 
Public Cm As New OleDbCommand
Public Rd As OleDbDataReader

Sub SalvaEntEst()
[ô] Testa se conexão esta aberta
If Conex.State = ConnectionState.Closed Then
Call Conexao()
End If
[ô] Inclue o registro de entrada
Cm = Conex.CreateCommand
Cm.CommandText = [Ô]Insert into Tb_Estoque_Entrada (Fr_CodForn,Fr_CodProd,Fr_Quantidade,Fr_VlUnit,Fr_VlTotal,Fr_Margem,Fr_PrVenda) values([ô][Ô] & Fr4_Estoque.TE_CmCodForn.Text & [Ô][ô],[ô][Ô] & Fr4_Estoque.TE_CmCodProd.Text & [Ô][ô],[ô][Ô] & Fr4_Estoque.TE_Qtd.Text & [Ô][ô],[ô][Ô] & Fr4_Estoque.TE_VlUnit.Text & [Ô][ô],[ô][Ô] & Fr4_Estoque.TE_Total.Text & [Ô][ô],[ô][Ô] & Fr4_Estoque.TE_Margem.Text & [Ô][ô],[ô][Ô] & Fr4_Estoque.TE_PrVenda.Text & [Ô][ô])[Ô]
Cm.ExecuteNonQuery()

[ô] Registra as modificações realizadas (ou deveria)
Cm = Conex.CreateCommand
Cm.CommandText = [Ô]update Tb_Estoque_Entrada Set Fr_Margem=[ô][Ô] & Fr4_Estoque.TE_Margem.Text & [Ô][ô], Fr_PrVenda=[ô][Ô] & Fr4_Estoque.TE_PrVenda.Text & [Ô][ô] where Fr_CodForn=[ô][Ô] & Fr1_CadForn.F_CodForn.Text & [Ô][ô] and Fr_CodProd=[ô][Ô] & Fr4_Estoque.TE_CmCodProd.Text & [Ô][ô][Ô]
Cm.ExecuteNonQuery()


TECLA 27/10/2010 20:12:57
#356098
Já executou a mesma instrução dentro da base de dados?
Qual é o resultado?
PEGUDO 28/10/2010 13:19:47
#356156
Todas as colunas do BD são do tipo Texto?
Pelo que eu vi, você está enviando uma string para dentro de uma coluna chamada Fr_CodProd e, geralmente, uma coluna que guarda um código de alguma coisa é do tipo integer.

Outra coisa (é meio idiota mas me deu muito trabalho): Uma vez eu não consegui atualizar meu banco de dados, com o UPDATE, porque eu coloquei dois espaços vazios entre os comandos: [Ô]UPDATE tbloperadores...[Ô].
Eu só consegui resolver meu problema depois que eu deletei o espaço vazio que estava sobrando entre as instruções [Ô]UPDATE tbloperadores...[Ô].
Veja se também é o seu caso.
Tópico encerrado , respostas não são mais permitidas