我用如下代码实现excel到access的数据导入:
在运行时,如果第一条记录为1234(全部是数字),第二条记录为fm787(含有数字外字符,这里仅是举例示意),当运行到第二条记录时,发生数据库引擎错误,错误号:3349,错误类型:实时错误,错误解释:数值字段益处。颠倒这两条记录还是会出现该错误。即使excel列中的数据格式化为同一类型,还是会出现这种错误。
请问为什么会出现这种错误?怎么解决这种错误?
Public Function ExportExcelSheetToAccess(sSheetName As String, sExcelPath As String, sAccessTable As String, sAccessDBPath As String)
    Dim db1 As Database  '源数据库
    Dim db2 As Database  '目标数据库
    Dim rs1 As Recordset '源记录集
    Dim rs2 As Recordset '目标记录集
    Dim m As Integer     '源记录集的记录数
    Dim n As Integer     '目标记录集的字段数
    
    '打开源记录数据,即excel文件
    Set db1 = OpenDatabase(sExcelPath, True, False, "Excel 8.0")
    '确定源记录集,重点是是excel中的那个sheet
    Set rs1 = db1.OpenRecordset("select * From [" & sSheetName & "$]", , False)
    '打开目标数据库
    Set db2 = OpenDatabase(sAccessDBPath, True, False)
    '确定目标记录集
    Set rs2 = db2.OpenRecordset("select * from " & sAccessTable, , False)
    
    If rs1.BOF = False Or rs1.EOF = False Then
        rs1.MoveLast  '为了准确获得源记录集中的记录数
    End If
    If rs1.RecordCount > 0 Then
        rs1.MoveFirst  '从第一条记录开始导入
        For m = 1 To rs1.RecordCount
            rs2.AddNew
            For n = 0 To (rs2.Fields.Count - 1)
                If IsNull(rs1.Fields(n).Value) = False Then  '只导入非空值
                    rs2.Fields(n).Value = rs1.Fields(n).Value
                End If
            Next n
            rs2.Update     '一条一条记录更新,该方法值得商酌
            rs1.MoveNext
        Next m
    Else
        MsgBox "数据源中没有数据,请选择正确的数据源", vbInformation + vbOKOnly, sInfoTitle
    End If
    
    '释放所占资源
    rs1.Close
    Set rs1 = Nothing
    rs2.Close
    Set rs2 = Nothing
    db1.Close
    Set db1 = Nothing
    db2.Close
    Set db2 = Nothing
            
End Function