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?

Foi útil?

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
scroll top