Quando eu preencher todos os campos que obtenho o erro 3021:Sem Atuais Registro
-
21-12-2019 - |
Pergunta
Eu tenho uma tabela que precisa ser preenchido com algum registro por meio de um formulário.Eu estou usando este código:
Set rp = CurrentDb.OpenRecordset("table1")
Do
rp.Edit
rp!field2 = Text22
rp.Update
rp.MoveNext
Loop
Quando o código preenche a tabela e chega ao final do arquivo, recebo a 3021 erro.
Por que isso está acontecendo?
Solução
Tente este:
Set rp = CurrentDb.OpenRecordset("table1")
Do Until rp.EOF
rp.Edit
rp!Field2 = Text22
rp.Update
rp.MoveNext
Loop
outra forma seria usar algo como isto:
CurrentDb.Execute "UPDATE table1 SET field2='" & Text22 & "'", dbFailOnError
Outras dicas
Seria muito, muito mais rápido usar o SQL se você quiser atualizar cada linha em uma tabela para um valor específico.
Por exemplo:
sSQL= "UPDATE Table1 SET Field2=param"
Set qdf = db.CreateQueryDef("", sSQL)
qdf.Parameters!param = Trim(Me.Text22)
qdf.ReturnsRecords = False
qdf.Execute dbFailOnError
intResult = qdf.RecordsAffected
MsgBox "You updated " & intResult & " records."
Você pode até mesmo especificar o tipo de parâmetro, por exemplo:
sSQL= "PARAMETERS param Text(150); UPDATE Table1 SET Field2=param"
É muito mais seguro para usar parâmetros para construir seqüências de caracteres sql.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow