我有一张表需要通过表单填写一些记录。我正在使用此代码:
Set rp = CurrentDb.OpenRecordset("table1")
Do
rp.Edit
rp!field2 = Text22
rp.Update
rp.MoveNext
Loop
当代码填满表格并到达文件末尾时,我收到3021错误。
为什么会这样?
答案 0 :(得分:3)
试试这个:
Set rp = CurrentDb.OpenRecordset("table1")
Do Until rp.EOF
rp.Edit
rp!Field2 = Text22
rp.Update
rp.MoveNext
Loop
另一种方法是使用这样的东西:
CurrentDb.Execute "UPDATE table1 SET field2='" & Text22 & "'", dbFailOnError
答案 1 :(得分:1)
如果您希望将表中的每一行更新为特定值,那么使用SQL将会快得多。
例如:
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."
您甚至可以指定参数类型,例如:
sSQL= "PARAMETERS param Text(150); UPDATE Table1 SET Field2=param"
使用参数构建sql字符串会更安全。