gpt4 book ai didi

vba - Access vba : go to next iteration on error

转载 作者:行者123 更新时间:2023-12-03 08:23:24 25 4
gpt4 key购买 nike

Listbox2是从表中的项填充的,而表本身是从listbox1填充的。如果尝试添加到表中包含重复的键,则将引发错误。我希望我的代码通过跳过有问题的问题迭代来处理错误,而不是在循环中途停止。

我的代码如下所示:

Public Sub CopySelected(ByRef frm As Form)

Dim ctlSource As Control
Dim intCurrentRow As Integer

Set ctlSource = Me!listbox1
On Error GoTo nonrelation
Dim rst As dao.Recordset
Set rst = CurrentDb.OpenRecordset("Select * from [tempTable]")

For intCurrentRow = 0 To ctlSource.ListCount - 1
If ctlSource.Selected(intCurrentRow) Then
rst.AddNew
rst![field1] = Forms![myForm]![listbox1].Column(1, intCurrentRow)
rst![field2] = Forms![myForm]![listbox1].Column(0, intCurrentRow)
rst.Update
Forms![myForm]!listbox2.Requery
End If
Next intCurrentRow
Forms![myForm]!listbox2.Requery
done:
Exit Sub
nonrelation:
MsgBox Err.Description
End Sub

我知道我必须以某种方式使用“恢复”命令来代替 MsgBox Err.Description,但是我从未使用过它。我想知道如何在我的代码中正确实现它。谢谢!

最佳答案

您可以使用助手功能检查记录是否存在,如果不存在则仅添加。

Public Function Exists(ByVal Value As String) As Boolean
Exists = DCount("*","tempTable","[field1]='" & Value & "'") > 0
End Function

然后在循环中检查每个记录,然后再尝试插入。
For intCurrentRow = 0 To ctlSource.ListCount - 1
If ctlSource.Selected(intCurrentRow) Then
If Not Exists(Forms![myForm]![listbox1].Column(1, intCurrentRow)) Then
With rst
.AddNew
![field1] = Forms![myForm]![listbox1].Column(1, intCurrentRow)
![field2] = Forms![myForm]![listbox1].Column(0, intCurrentRow)
.Update
End With
Forms![myForm]!listbox2.Requery
End If
End If
Next intCurrentRow

注意,上面的示例期望使用 String。如果是数字,则需要删除 ' '引号。

关于vba - Access vba : go to next iteration on error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51103850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com