我以前的标题在那里引起了一些混乱......更新我最近在使用一些 VBA 连接 Excel 和 Access 时遇到了这个问题。
所以我有一个电子表格,其中包含一个需要导入 Access 数据库的表。该表是通用的,如下所示。
EmployeeNumber Unused_Field2 Unused_Field3
1 @@@ @@@
2 @@@ @@@
3 @@@ @@@
Access 中的唯一键设置为 EmployeeNumber。
我在 Excel 中的 VBA 代码如下所示:
Sub test()
Dim con As ADODB.Connection
Dim rst As ADODB.Recordset
strcon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\temp\mydb.mdb;"
strsql = "SELECT * FROM Table1"
Set con = New Connection
Set rst = New Recordset
con.Open strcon
rst.Open strsql, strcon, adOpenStatic, adLockOptimistic
For i = 0 To n
On Error GoTo Errhdl
rst.AddNew Array("Field1", "Field2", "Field3"), Array(Range("A" & i), Range("B" & i), Range("C" & i))
On Error GoTo 0
Next
Exit Sub
Errhdl:
Debug.Print "Record" & i & "caused an error"
Resume Next
End Sub
不幸的是,数据质量不高,我经常会有重复的值导致密钥违规。虽然我虽然 Resume Next 将清除允许另一个“AddNew”运行的错误,但它没有。一个键违规后的所有后续条目都将返回相同的错误。
所以我的问题如下:
- 是否可以清除与记录集相关的错误?(作为记录,我试图获取“错误集合”并使用了 Errors.Clear 方法。那没有成功。错误集合是 ADO 对象特有的属性 - MSDN 错误集合)
- 这可以在不关闭和重新打开记录集的情况下完成吗?
如果需要更多说明,请告诉我!