ERRO AO TENTAR ALTERAR REGISTROS DO BANCO DE DADOS
boa tarde jovens...desculpa vir incomodar mais uma vez....mas estou quase terminando, rsrsrsrs
estou agora tentando alterar os registos do meu banco de dados..mas quando clico em alterar ele da um erro:
a linha nao pode ser localizada para atualizaçao. alguns valores podem ter sido alterados desde que ela foi lida pela ultima vez.
runtime error [ô] -2147217864 (80040e38)
abaixo o fonte....:
Private Sub ImgAlt_Click()
rec!idproduto = TxtCodProd.Text
rec!descricao = TxtDescProd.Text
rec!valor = TxtPrecProd.Text
rec!idsetor = TxtSetProd.Text
rec!imposto = TxtImpProd.Text
rec!categoriaimposto = TxtCatImpProd.Text
rec.Update
MsgBox [Ô]registro incluido com sucesso.[Ô], vbInformation, [Ô]aviso[Ô]
End Sub
desde ja obrigado...
estou agora tentando alterar os registos do meu banco de dados..mas quando clico em alterar ele da um erro:
a linha nao pode ser localizada para atualizaçao. alguns valores podem ter sido alterados desde que ela foi lida pela ultima vez.
runtime error [ô] -2147217864 (80040e38)
abaixo o fonte....:
Private Sub ImgAlt_Click()
rec!idproduto = TxtCodProd.Text
rec!descricao = TxtDescProd.Text
rec!valor = TxtPrecProd.Text
rec!idsetor = TxtSetProd.Text
rec!imposto = TxtImpProd.Text
rec!categoriaimposto = TxtCatImpProd.Text
rec.Update
MsgBox [Ô]registro incluido com sucesso.[Ô], vbInformation, [Ô]aviso[Ô]
End Sub
desde ja obrigado...
nomedoteurecordset([Ô]nomedatabela_nomedocampo[Ô]) = Trim(nometotext.Text)
nomedoteurecordset.Update
. . .
outra coisa
precisa ver se tu não tá passando strings para campos da tabela tipo valor ou vice versa, ou mesmo
se na tua função os nomes dos campos estão corretos com os abertos no recordset
obrigado..mas ainda nao funcionou...agora ta dando outro erro:
o item nao pode ser encontrado na coleçao correspondente ao nome oui ao ordinal solicitado
fiz dessa forma:
Private Sub ImgAlt_Click()
rec([Ô]tblprodutos_idproduto[Ô]) = Trim(TxtCodProd.Text)
rec([Ô]tblprodutos_descricao[Ô]) = Trim(TxtDescProd.Text)
rec([Ô]tblprodutos_valor[Ô]) = Trim(TxtvalProd.Text)
rec([Ô]tblprodutos_idsetor[Ô]) = Trim(TxtSetProd.Text)
rec([Ô]tblprodutos_imposto[Ô]) = Trim(TxtImpProd.Text)
rec([Ô]tblprodutos_categoriaimposto[Ô]) = Trim(TxtCatImpProd.Text)
rec.Update
MsgBox [Ô]registro incluido com sucesso.[Ô], vbInformation, [Ô]aviso[Ô]
End Sub
sobre passar strings para campos de valores, eu acho que nao pq, eu nem alterei nada e clicquei em alterar e ele ja deu esse erro, se altero somente o codigo ele tb da esse erro..
obrigado...
o item nao pode ser encontrado na coleçao correspondente ao nome oui ao ordinal solicitado
fiz dessa forma:
Private Sub ImgAlt_Click()
rec([Ô]tblprodutos_idproduto[Ô]) = Trim(TxtCodProd.Text)
rec([Ô]tblprodutos_descricao[Ô]) = Trim(TxtDescProd.Text)
rec([Ô]tblprodutos_valor[Ô]) = Trim(TxtvalProd.Text)
rec([Ô]tblprodutos_idsetor[Ô]) = Trim(TxtSetProd.Text)
rec([Ô]tblprodutos_imposto[Ô]) = Trim(TxtImpProd.Text)
rec([Ô]tblprodutos_categoriaimposto[Ô]) = Trim(TxtCatImpProd.Text)
rec.Update
MsgBox [Ô]registro incluido com sucesso.[Ô], vbInformation, [Ô]aviso[Ô]
End Sub
sobre passar strings para campos de valores, eu acho que nao pq, eu nem alterei nada e clicquei em alterar e ele ja deu esse erro, se altero somente o codigo ele tb da esse erro..
obrigado...
Este erro está ocorrendo porque, tem algum campo que voce digitou no código que não esta no banco.
Usa este codigo e ve se funciona:
Sub AlteraComputadores()
Set prs = New ADODB.Recordset
SQL = [Ô]select * from patcomputadores where Cod = [Ô] & txtCod.Text & [Ô][Ô]
prs.Open SQL, gConexao, adpenStatic, adLockOptimistic, adCmdText
With rec
.Fields([Ô]modelo[Ô]) = txtModelo
.Fields([Ô]placa[Ô]) = txtPlaca
.Fields([Ô]processador[Ô]) = txtProcessador
.Fields([Ô]memoria[Ô]) = txtMemoria
.Fields([Ô]mouse[Ô]) = txtMouse
.Fields([Ô]teclado[Ô]) = txtTeclado
.Fields([Ô]monitor[Ô]) = txtMonitor
.Fields([Ô]estabilizador[Ô]) = txtEstabilizador
.Fields([Ô]valor[Ô]) = txtValor
.Fields([Ô]obs[Ô]) = txtObs
.Update
MsgBox [Ô]Operação Realizada[Ô], vbInformation + vbOKOnly, [Ô]Cadastro...[Ô]
End With
End Sub
Lembrando que é uma função.
Boa sorte
Usa este codigo e ve se funciona:
Sub AlteraComputadores()
Set prs = New ADODB.Recordset
SQL = [Ô]select * from patcomputadores where Cod = [Ô] & txtCod.Text & [Ô][Ô]
prs.Open SQL, gConexao, adpenStatic, adLockOptimistic, adCmdText
With rec
.Fields([Ô]modelo[Ô]) = txtModelo
.Fields([Ô]placa[Ô]) = txtPlaca
.Fields([Ô]processador[Ô]) = txtProcessador
.Fields([Ô]memoria[Ô]) = txtMemoria
.Fields([Ô]mouse[Ô]) = txtMouse
.Fields([Ô]teclado[Ô]) = txtTeclado
.Fields([Ô]monitor[Ô]) = txtMonitor
.Fields([Ô]estabilizador[Ô]) = txtEstabilizador
.Fields([Ô]valor[Ô]) = txtValor
.Fields([Ô]obs[Ô]) = txtObs
.Update
MsgBox [Ô]Operação Realizada[Ô], vbInformation + vbOKOnly, [Ô]Cadastro...[Ô]
End With
End Sub
Lembrando que é uma função.
Boa sorte
jovem obrigado pela paciencia em me ajudar...mas continua dando erro agora fiz dessa forma:
Private Sub ImgAlt_Click()
Set rec = New ADODB.Recordset
comandsql = [Ô]select * from tblprodutos where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
cnnsoftpark.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic
With rec
.Fields([Ô]idproduto[Ô]) = TxtCodProd.Text
.Fields([Ô]descricao[Ô]) = TxtDescProd.Text
.Fields([Ô]valor[Ô]) = TxtPrecProd.Text
.Fields([Ô]idsetor[Ô]) = TxtSetProd.Text
.Fields([Ô]imposto[Ô]) = TxtImpProd.Text
.Fields([Ô]categoriaimposto[Ô]) = TxtCatImpProd.Text
.Update
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End With
End Sub
e da esse erro:
run time error: 3705
operaçao nao permitida quando o objeto esta aberto....
Private Sub ImgAlt_Click()
Set rec = New ADODB.Recordset
comandsql = [Ô]select * from tblprodutos where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
cnnsoftpark.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic
With rec
.Fields([Ô]idproduto[Ô]) = TxtCodProd.Text
.Fields([Ô]descricao[Ô]) = TxtDescProd.Text
.Fields([Ô]valor[Ô]) = TxtPrecProd.Text
.Fields([Ô]idsetor[Ô]) = TxtSetProd.Text
.Fields([Ô]imposto[Ô]) = TxtImpProd.Text
.Fields([Ô]categoriaimposto[Ô]) = TxtCatImpProd.Text
.Update
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End With
End Sub
e da esse erro:
run time error: 3705
operaçao nao permitida quando o objeto esta aberto....
Isso porque a tabela ja esta aberta e esta usando o comando para abrir novamente.
Este CNNSOFTPARK, é a conexao com o banco certo?
[txt-color=#e80000]cnnsoftpark.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic[/txt-color]
Ao invez, tenta colocar assim:
[txt-color=#e80000]rec.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic[/txt-color]
Este CNNSOFTPARK, é a conexao com o banco certo?
[txt-color=#e80000]cnnsoftpark.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic[/txt-color]
Ao invez, tenta colocar assim:
[txt-color=#e80000]rec.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic[/txt-color]
cara, obrigado tambem, mas continua dando erro, agora é esse aqui:
os argumentos sao incorretos, estao fora do intervalo aceitavel ou estao em conflito.
os argumentos sao incorretos, estao fora do intervalo aceitavel ou estao em conflito.
A variável onde está descrito o comando SQL está errada. Troque:
cnnsoftpark.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic
por:
cnnsoftpark.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic
cnnsoftpark.open sql, cnnsoftpark, adOpenStatic, adLockOptimistic
por:
cnnsoftpark.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic
entao o codigo esta assim agora:
Private Sub alterar()
Set rec = New ADODB.Recordset
comandsql = [Ô]select * from tblprodutos where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
With rec
.Fields([Ô]idproduto[Ô]) = TxtCodProd.Text
.Fields([Ô]descricao[Ô]) = TxtDescProd.Text
.Fields([Ô]valor[Ô]) = TxtPrecProd.Text
.Fields([Ô]idsetor[Ô]) = TxtSetProd.Text
.Fields([Ô]imposto[Ô]) = TxtImpProd.Text
.Fields([Ô]categoriaimposto[Ô]) = TxtCatImpProd.Text
.Update
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End With
End Sub
mas agora da esse erro:
erro de sintaxe na clausula from.
Private Sub alterar()
Set rec = New ADODB.Recordset
comandsql = [Ô]select * from tblprodutos where idproduto = [Ô] & TxtCodProd.Text & [Ô][Ô]
rec.open comandsql, cnnsoftpark, adOpenStatic, adLockOptimistic, adCmdTable
With rec
.Fields([Ô]idproduto[Ô]) = TxtCodProd.Text
.Fields([Ô]descricao[Ô]) = TxtDescProd.Text
.Fields([Ô]valor[Ô]) = TxtPrecProd.Text
.Fields([Ô]idsetor[Ô]) = TxtSetProd.Text
.Fields([Ô]imposto[Ô]) = TxtImpProd.Text
.Fields([Ô]categoriaimposto[Ô]) = TxtCatImpProd.Text
.Update
MsgBox [Ô]Alteraçao realizada.[Ô], vbInformation + vbOKOnly, [Ô]Alteração[Ô]
End With
End Sub
mas agora da esse erro:
erro de sintaxe na clausula from.
O correto seria isto
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:
para campos do tipo numero não se usa aspas ex:
para campos do tipo data/hora deve-se usar o number(#) com a seguinte formatação mm/dd/yyyy ex:
espero ter ajudado
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
Tópico encerrado , respostas não são mais permitidas