VBA 记录集更新 - 无效参数 - 除一条记录外有效



好的,所以总体目标是将数据从Excel文件获取到SharePoint列表中。我已将 Excel 文件导入临时表(工资单链接(,我有一个源记录集(需要添加到 SharePoint 列表的记录(和一个目标记录集(SharePoint 列表(。

下面的代码运行良好,刚刚成功加载了 14,577 条记录。但是,它不喜欢一个记录!!我得到"无效参数"。我尝试追加的记录看起来与其他记录相同,它不是重复的,SharePoint 字段的数据类型是短文本,没有限制。我错过了什么?!?!?

Sub Example()
Dim db As DAO.Database
Dim Source_rst As DAO.Recordset
Dim Dest_rst As DAO.Recordset
Set Source_rst = db.OpenRecordset("SELECT [Payroll Link].REFNO, [Payroll Link].CDSID, [Payroll Link].INITS, [Payroll Link].SURNAME, [Payroll Link].[C/CENT], [Payroll Link].GRADE FROM [Payroll Link] LEFT JOIN [Payroll Data] ON [Payroll Link].REFNO = [Payroll Data].[Payroll Number] WHERE ((([Payroll Link].REFNO) Is Not Null) AND (([Payroll Data].[Payroll Number]) Is Null));", dbOpenDynaset)
Set Dest_rst = db.OpenRecordset("Payroll Data", dbOpenDynaset)
With Source_rst
If Not .BOF And Not .EOF Then
.MoveLast
.MoveFirst
While (Not .EOF)
Dest_rst.AddNew
Dest_rst![Payroll Number] = Trim(Source_rst![REFNO])
Dest_rst![CDS ID] = Trim(Source_rst![CDSID])
Dest_rst![Initials] = Trim(Source_rst![INITS])
Dest_rst![SURNAME] = Trim(Source_rst![SURNAME])
Dest_rst![Cost Centre] = Trim(Source_rst![C/CENT])
Dest_rst![GRADE] = Trim(Source_rst![GRADE])
Dest_rst.Update
.MoveNext
DoEvents
Wend
End If
.Close
End With
End Sub

解决了!其中一个字段中隐藏了一个特殊字符(在我的例子中是文件分隔符字符(。我通过使用 VBA 中的 Asc(( 函数检查每个字符的 ASCII 值来发现这一点。

改变:

Dest_rst![Initials] = Trim(Source_rst![INITS])

自:

Dest_rst![Initials] = Trim(Replace(Source_rst![INITS], Chr(28), ""))

为我修复了它。

最新更新