ROTINA PARA ATUALIZAR CAMPO DA TABELA

THAINE 03/04/2012 16:03:00
#399013
Gente.. por favor alguem me ajudaa
tenho uma tabela onde são armazenados os itens comprados..
posteriormente o usuario pode dar desconto à essa venda
e essa rotina que eu estou usando so da certo com um item comprado, com dois ou mais da erro

Private Sub PrecoDesconto()
For i = 0 To dgvVenda.Rows.Count - 1
Dim objCon As SqlConnection
objCon = New SqlConnection([Ô]server=localhost;uid=user;pwd=123;database=Banco[Ô])
objCon.Open()
Dim strSQL As String
strSQL = [Ô]update Item set PrecoUnitario = PrecoUnitario - [Ô] & lblValorD.Text / dgvVenda.Item([Ô]colQtd[Ô], i).Value & [Ô] where CodItem=[ô][Ô] & dgvVenda.Item([Ô]colCodItem[Ô], i).Value & [Ô][ô][Ô]
Dim objComando As New SqlCommand
objComando.CommandType = CommandType.Text
objComando.CommandText = strSQL
objComando.Connection = objCon
objComando.ExecuteNonQuery()
Next
End Sub
ALTAIR148 03/04/2012 16:07:45
#399015
Resposta escolhida
Boa tarde,

Pergunta básica... Qual erro? Se descrevedo o erro fica mais fácil lhe ajudar.
THAINE 03/04/2012 16:11:39
#399016
o erro é..
[ô]Sintaxe incorreta próxima a [ô]84[ô]
ALTAIR148 03/04/2012 16:21:12
#399019
Citação:

strSQL = [Ô]update Item set PrecoUnitario = PrecoUnitario - [Ô] & lblValorD.Text / dgvVenda.Item([Ô]colQtd[Ô], i).Value & [Ô] where CodItem=[ô][Ô] & dgvVenda.Item([Ô]colCodItem[Ô], i).Value & [Ô][ô][Ô]



Tem coisa errada ai, por exemplo eu lhe aconselho a fazer a conta fora da SQL, dessa forma ai é como se fizesse a conta na SQL que é bem diferente. é mais fácil fazer a conta antes e passar na sql o valor final, ou seja, já calculado.
THAINE 03/04/2012 16:33:04
#399022
aqui está a função ja calculada
Private Sub teste()
For i = 0 To dgvVenda.Rows.Count - 1
Dim resul As Integer
resul = lblValorD.Text / dgvVenda.Item([Ô]colQtd[Ô], i).Value
Next
End Sub

como coloco dentro do sql?
ALTAIR148 03/04/2012 16:36:07
#399023
   For i = 0 To dgvVenda.Rows.Count - 1
Dim objCon As SqlConnection
objCon = New SqlConnection([Ô]server=localhost;uid=user;pwd=123;database=Banco[Ô])
objCon.Open()
Dim strSQL As String
resul = lblValorD.Text / dgvVenda.Item([Ô]colQtd[Ô], i).Value
PrecoUnitario = precoUnitario - result
strSQL = [Ô]update Item set PrecoUnitario = precounitario [Ô] where CodItem=[ô][Ô] & dgvVenda.Item([Ô]colCodItem[Ô], i).Value & [Ô][ô][Ô]
Dim objComando As New SqlCommand
objComando.CommandType = CommandType.Text
objComando.CommandText = strSQL
objComando.Connection = objCon
objComando.ExecuteNonQuery
GUIMORAES 03/04/2012 16:37:43
#399024
faz um debug na variavel strSQL e verifica o comando que está lá, tenta copiar e executar direto pelo seu Gerenciado de banco de dados(sql manager por exemplo).

Deverá aparecer algo assim

update Item set PrecoUnitario = PrecoUnitario - 10/ 2 where CodItem=[ô]1[ô]

caso não consiga encontrar o erro, posta o resultado da strSQL(como o exemplo acima)

t+
PHOENIX209E 04/04/2012 00:58:59
#399063
update Item set PrecoUnitario = PrecoUnitario - [Ô] & lblValorD.Text / dgvVenda.Item([Ô]colQtd[Ô], i).Value & [Ô] where CodItem=[ô][Ô] & dgvVenda.Item([Ô]colCodItem[Ô], i).Value & [Ô][ô]

provavelmente o 84 possui casas decimais,entao esta sendo separado por virgula,verifique isso.

faça um step by step pra ver AONDE esta o erro.
THAINE 04/04/2012 08:51:17
#399068
eu agradeço à todos pela atenção..
ALTAIR148 era isso mesmo, era so fazer as contas fora do SQL que deu tudo certinho.
muito obrigada
Tópico encerrado , respostas não são mais permitidas