ERRO AO TENTAR ALTERAR REGISTROS DO BANCO DE DADOS
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)
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)
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....
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....
olha uma virgula a mais
a virgula estava a mais nesta linha
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 & [Ô][ô],[Ô]
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.....
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
pq é ela que fica amarela quando o vb mostra o erro.....
Citação::
O correto seria istoPrivate 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

que bom que te ajudou cara, pra mim só falta resolver isso, e os relatorios...
Citação::
olha uma virgula a maisPrivate 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
tenta alterar pra isto
ou para 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
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
[Ô]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
o colega ALEXANDRE observou bem então siplifique a string assim e talvez funcione agora
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 = [Ô][Ô]
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 = [Ô][Ô]
Tópico encerrado , respostas não são mais permitidas