ERRO AO TENTAR ALTERAR REGISTROS DO BANCO DE DADOS

MACKEY 05/06/2010 13:53:46
#343981
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...
MICROSCHEME 05/06/2010 14:48:34
#343996

nomedoteurecordset([Ô]nomedatabela_nomedocampo[Ô]) = Trim(nometotext.Text)
nomedoteurecordset.Update

. . .
MICROSCHEME 05/06/2010 14:53:11
#343997

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
MACKEY 05/06/2010 15:06:19
#343998
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...
SNNIFFER 05/06/2010 19:01:00
#344004
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
MACKEY 05/06/2010 19:25:31
#344006
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....
SNNIFFER 05/06/2010 19:49:07
#344010
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]
MACKEY 05/06/2010 20:00:00
#344013
cara, obrigado tambem, mas continua dando erro, agora é esse aqui:

os argumentos sao incorretos, estao fora do intervalo aceitavel ou estao em conflito.
EDERMIR 06/06/2010 15:29:53
#344044
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
MACKEY 06/06/2010 16:19:08
#344049
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.
MARCELO.TREZE 07/06/2010 09:11:12
#344086
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



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