ERRO AO TENTAR ALTERAR REGISTROS DO BANCO DE DADOS

EDERMIR 07/06/2010 09:42:39
#344090
Imaginando que o campo IDPRODUTO é numérico:

comandsql = [Ô]select * from tblprodutos where idproduto = [Ô] & TxtCodProd.Text -> sem as aspas do final


A recomendação do MARCELO-TREZE é excelente. Eu também prefiro tratar pelo comando sql UPDATE.

As únicas observações seriam:
- Campos caracter SEMPRE delimitados com aspas simples (não importa o banco)
- Campos numéricos NUNCA colocar aspas simples (não importa o banco)
- Campos data utilizar [Ô]#[Ô] e formato mm/dd/yyyy (para ACCESS) ou ASPAS SIMPLES e formato yyyy-mm-dd (para FIREBIRD)
MACKEY 07/06/2010 20:13:33
#344181
jovens,...tentei como ele falou e agora mudou o erro de novo:

Private Sub alterar()
Set rec = New ADODB.Recordset
comandsql = comansql & [Ô]UPDATE tblprodutos SET [Ô]
comandsql = comansql & [Ô]descricao = [ô][Ô] & TxtDescProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]valor = [ô][Ô] & TxtPrecProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]idsetor = [ô][Ô] & TxtSetProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]imposto = [ô][Ô] & TxtImpProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô] where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End Sub

agora o erro é :

erro de sintaxe na clausula from....

MARCELO.TREZE 10/06/2010 18:12:12
#344522
olha uma virgula a mais

Private Sub alterar()
Set rec = New ADODB.Recordset
comandsql = comansql & [Ô]UPDATE tblprodutos SET [Ô]
comandsql = comansql & [Ô]descricao = [ô][Ô] & TxtDescProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]valor = [ô][Ô] & TxtPrecProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]idsetor = [ô][Ô] & TxtSetProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]imposto = [ô][Ô] & TxtImpProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô][Ô]
comandsql = comansql & [Ô] where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End Sub



a virgula estava a mais nesta linha

       comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô],[Ô]
MACKEY 10/06/2010 20:48:12
#344531
jovem...alterei mas continua dando o mesmo erro, nao ser alguma coisa nessa linha aqui???

rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable


pq é ela que fica amarela quando o vb mostra o erro.....
SERGIO 10/06/2010 22:00:30
#344535
Citação:

:
O correto seria isto

Private Sub alterar()
Set rec = New ADODB.Recordset
comandsql = comansql & [Ô]UPDATE tblprodutos SET [Ô]
comandsql = comansql & [Ô]descricao = [ô][Ô] & TxtDescProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]valor = [ô][Ô] & TxtPrecProd.Tex & [Ô][ô],[Ô]
comandsql = comansql & [Ô]idsetor = [ô][Ô] & TxtSetProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]imposto = [ô][Ô] & TxtImpProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text [Ô][ô][Ô]
comandsql = comansql & [Ô] where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End Sub



PS: repare que trate todos os campos entre aspas simples, porém se vc estiver usando ACCESS deve seguir a seguinte regra:

para campos do tipo texto use aspas simples ([ô]) ex:

....descricao =[txt-color=#e80000] [ô][/txt-color][Ô] & txtdesc & [Ô][txt-color=#e80000][ô][/txt-color][Ô]


para campos do tipo numero não se usa aspas ex:

...id = [Ô] & txtid & [Ô][Ô]


para campos do tipo data/hora deve-se usar o number(#) com a seguinte formatação mm/dd/yyyy ex:

...dataini = #[Ô] & format(txtdataini,[Ô]mm/dd/yyyy[Ô]) & [Ô]#[Ô]


espero ter ajudado




Nossa cara valeu msm esse topico me ajudou mto eu to usando o access e quando eu dava um update usando o id na clausula where dava erro pq eu colocava [ô] só agora consegui
MACKEY 10/06/2010 22:03:45
#344536
que bom que te ajudou cara, pra mim só falta resolver isso, e os relatorios...
ENGALEXANDRE 10/06/2010 23:22:18
#344547
Citação:

:
olha uma virgula a mais

Private Sub alterar()
Set rec = New ADODB.Recordset
comandsql = comansql & [Ô]UPDATE tblprodutos SET [Ô]
comandsql = comansql & [Ô]descricao = [ô][Ô] & TxtDescProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]valor = [ô][Ô] & TxtPrecProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]idsetor = [ô][Ô] & TxtSetProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]imposto = [ô][Ô] & TxtImpProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô][Ô]
comandsql = comansql & [Ô] where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End Sub



a virgula estava a mais nesta linha

       comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô],[Ô]



Após o Set rec = New ADODB.Recordset e antes de comandsql = comansql & [Ô]UPDATE tblprodutos SET [Ô] coloque:

comandsql = [Ô][Ô]

Boa Sorte!

Alexandre




MARCELO.TREZE 11/06/2010 09:32:13
#344570
tenta alterar pra isto

rec.open comandsql

ou para isto

Private Sub alterar()
comandsql = comansql & [Ô]UPDATE tblprodutos SET [Ô]
comandsql = comansql & [Ô]descricao = [ô][Ô] & TxtDescProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]valor = [ô][Ô] & TxtPrecProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]idsetor = [ô][Ô] & TxtSetProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]imposto = [ô][Ô] & TxtImpProd.Text & [Ô][ô],[Ô]
comandsql = comansql & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô][Ô]
comandsql = comansql & [Ô] where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
cnnsoftpark.Execute (comandsql)
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End Sub


ENGALEXANDRE 11/06/2010 11:01:44
#344586
Ninguém notou, mas olha como está escrita a rotina de UPDATE:

[Ô]comandsql = comansql...[Ô]
De um lado tem comandsql. Do outro lado tem comansql, sem o d. Certo que vai dar erro!
Além desse erro, volto a frisar que a primeira linha do comando após o Sub deve ser:
comandsql = [Ô][Ô]
...

Alexandre
MARCELO.TREZE 11/06/2010 11:17:01
#344588
o colega ALEXANDRE observou bem então siplifique a string assim e talvez funcione agora


Private Sub Alterar()
Dim cSQL As String
]Set rec = New ADODB.Recordset
cSQL = [Ô]UPDATE tblprodutos SET [Ô]
cSQL = cSQL & [Ô]descricao = [ô][Ô] & TxtDescProd.Text & [Ô][ô],[Ô]
cSQL = cSQL & [Ô]valor = [ô][Ô] & TxtPrecProd.Text & [Ô][ô],[Ô]
cSQL = cSQL & [Ô]idsetor = [ô][Ô] & TxtSetProd.Text & [Ô][ô],[Ô]
cSQL = cSQL & [Ô]imposto = [ô][Ô] & TxtImpProd.Text & [Ô][ô],[Ô]
cSQL = cSQL & [Ô]categoriaimposto = [ô][Ô] & TxtCatImpProd.Text & [Ô][ô][Ô]
cSQL = cSQL & [Ô] where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open cSQL, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End Sub


alexandre só para titulo de informação para string, quando nada é infromado ela tem por padrão [Ô][Ô], como para integer o padrão é zero

então não há necessidade de se colocar cSQL = [Ô][Ô]

Página 2 de 3 [26 registro(s)]
Tópico encerrado , respostas não são mais permitidas