访问VBA记录集插入字段错误发生

时间:2014-12-30 03:18:34

标签: csv access-vba

我有一个Access应用程序,用于查询网络上的目录并链接到从制造机器控制器输出的flat csv文件。我创建链接到每个csv文件的选择查询并循环记录并使用我的ImportData函数将它们插入到另一个表中:

Public Function ImportData(strPath As String, strFile As String, strTableName As String, strSheetVar As String) As Boolean
'On Error Resume Next
Dim csvTable As String
Dim strName2, strName3 As String

Dim origRS As DAO.Recordset
Dim destRS As DAO.Recordset
sql = "Select * FROM [Text;;FMT=Delimited;HDR=YES;IMEX=2;DATABASE=" & strPath & "].[" & strFile & "]"

Set origRS = CurrentDb.OpenRecordset(sql)
Set destRS = CurrentDb.OpenRecordset(strTableName)

    origRS.MoveFirst

    Do Until origRS.EOF
        destRS.AddNew
        destRS("[Date]") = CDate(origRS("[Date]"))
        destRS("[Time]") = CDate(origRS("[Time]"))
        destRS("[DateTimeKey]") = CDate(origRS("[Date]") & " " & origRS("[Time]"))
        destRS("[Shift End]") = origRS("[Shift End]")
        destRS("[Name21-1]") = Trim(CStr(origRS("[Name21-1]")))
        destRS("[StartTime1]") = origRS("[StartTime1]")
        destRS("[Name21-2]") = Trim(CStr(origRS("[Name21-2]")))
        destRS("[StartTime2]") = origRS("[StartTime2]")
        destRS("[Name21-3]") = Trim(CStr(origRS("[Name21-3]")))
        destRS("[StartTime3]") = origRS("[StartTime3]")
        destRS("[CNT]") = origRS("[CNT]")
        destRS("[Down Time]") = ConvertTimeToDecimal(CDate(origRS("[Down Time]")))
        destRS("[Job #1]") = origRS("[Job #1]")
        destRS("[MR Time 1]") = ConvertTimeToDecimal(CDate(origRS("[MR Time 1]")))
        destRS("[Waste #1]") = origRS("[Waste #1]")
        destRS("[Count #1]") = origRS("[Count #1]")
        destRS("[Run Time 1]") = ConvertTimeToDecimal(CDate(origRS("[Run Time 1]")))
        destRS("[Total Cnt 1]") = origRS("[Total Cnt 1]")
        destRS("[Total MR 1]") = ConvertTimeToDecimal(CDate(origRS("[Total MR 1]")))
        destRS("[Job #2]") = origRS("[Job #2]")
        destRS("[MR Time 2]") = ConvertTimeToDecimal(CDate(origRS("[MR Time 2]")))
        destRS("[Waste #2]") = origRS("[Waste #2]")
        destRS("[Count #2]") = origRS("[Count #2]")
        destRS("[Run Time 2]") = ConvertTimeToDecimal(CDate(origRS("[Run Time 2]")))
        destRS("[Total Cnt 2]") = origRS("[Total Cnt 2]")
        destRS("[Total MR 2]") = ConvertTimeToDecimal(CDate(origRS("[Total MR 2]")))
        destRS("[Job #3]") = origRS("[Job #3]")
        destRS("[MR Time 3]") = ConvertTimeToDecimal(CDate(origRS("[MR Time 3]")))
        destRS("[Waste #3]") = origRS("[Waste #3]")
        destRS("[Count #3]") = origRS("[Count #3]")
        destRS("[Run Time 3]") = ConvertTimeToDecimal(CDate(origRS("[Run Time 3]")))
        destRS("[Total Cnt 3]") = origRS("[Total Cnt 3]")
        destRS("[Total MR 3]") = ConvertTimeToDecimal(CDate(origRS("[Total MR 3]")))
        destRS("[Job #4]") = origRS("[Job #4]")
        destRS("[MR Time 4]") = ConvertTimeToDecimal(CDate(origRS("[MR Time 4]")))
        destRS("[Waste #4]") = origRS("[Waste #4]")
        destRS("[Count #4]") = origRS("[Count #4]")
        destRS("[Run Time 4]") = ConvertTimeToDecimal(CDate(origRS("[Run Time 4]")))
        destRS("[Total Cnt 4]") = origRS("[Total Cnt 4]")
        destRS("[Total MR 4]") = ConvertTimeToDecimal(CDate(origRS("[Total MR 4]")))
        destRS("[Job #5]") = origRS("[Job #5]")
        destRS("[MR Time 5]") = ConvertTimeToDecimal(CDate(origRS("[MR Time 5]")))
        destRS("[Waste #5]") = origRS("[Waste #5]")
        destRS("[Count #5]") = origRS("[Count #5]")
        destRS("[Run Time 5]") = ConvertTimeToDecimal(CDate(origRS("[Run Time 5]")))
        destRS("[Total Cnt 5]") = origRS("[Total Cnt 5]")
        destRS("[Total MR 5]") = ConvertTimeToDecimal(CDate(origRS("[Total MR 5]")))
        destRS("[Job #6]") = origRS("[Job #6]")
        destRS("[MR Time 6]") = ConvertTimeToDecimal(CDate(origRS("[MR Time 6]")))
        destRS("[Waste #6]") = origRS("[Waste #6]")
        destRS("[Count #6]") = origRS("[Count #6]")
        destRS("[Run Time 6]") = ConvertTimeToDecimal(CDate(origRS("[Run Time 6]")))
        destRS("[Total Cnt 6]") = origRS("[Total Cnt 6]")
        destRS("[Total MR 6]") = ConvertTimeToDecimal(CDate(origRS("[Total MR 6]")))
        destRS.Update
    origRS.MoveNext

    Loop


End Function

如果我运行代码并逐步执行它,这一行:

destRS("[Name21-1]") = Trim(CStr(origRS("[Name21-1]")))

总是成功。

如果我到达这一行

destRS("[Name21-2]") = Trim(CStr(origRS("[Name21-2]")))

如果有值,它将失败,但如果没有值则工作。

这些列中的值: Name21-1 Name21-2 Name21-3 是某个姓氏的相同值。我找不到为什么会失败的原因。

我附上了将使用此代码处理的文件的图像。 enter image description here 如果需要,请向我询问更多细节。

0 个答案:

没有答案