我有一个表需要通过形式填充一些记录。我正在使用这个代码:

Set rp = CurrentDb.OpenRecordset("table1")
Do
    rp.Edit
    rp!field2 = Text22
    rp.Update
    rp.MoveNext
Loop
.

代码填充表并到达文件的末尾时,我得到3021错误。

为什么发生这种情况?

有帮助吗?

解决方案

试试这个:

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 
.

其他提示

如果您希望将表中的每一行更新到特定值,则使用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字符串的参数是更安全的。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top