防止在MS Access vba导入中截断前导零

时间:2012-11-30 21:21:31

标签: access-vba ms-access-2010

我使用下面的代码从本地文件夹导入CSV文件,然后导入Access中的表。 但是,我注意到前导零丢失/被截断。

不确定为什么我认为Access没有切断零。

我尝试使用零填充但不起作用。我认为在导入访问期间前导零被截断,因为这是由代码发生的,不知道如何阻止它。

希望这里的伟大专业人士可以看看:

Option Compare Database
Option Explicit

Sub ImportFileProcedure()
Dim strPathFile As String, strFile As String, strPath As String
Dim strTable As String
Dim xlApp As Object, xlWb As Object, xlWs As Object
Dim lngRow As Long, lngLastRow As Long
Dim rst As DAO.Recordset
strPath = "C:\FOLDER\"
strTable = "TEMP_TBL"
strFile = Dir(strPath & "*.csv")
Set rst = CurrentDb.OpenRecordset(strTable)
Do While Len(strFile) > 0
      strPathFile = strPath & strFile
        Set xlApp = CreateObject("Excel.Application")
        Set xlWb = xlApp.Workbooks.Open(strPathFile)
        Set xlWs = xlWb.Worksheets(1)
        lngLastRow = xlWs.UsedRange.Rows.Count
        For lngRow = 2 To lngLastRow
            rst.AddNew
            rst("SAMPLE") = xlWs.Range("A" & lngRow).Value
            rst("SAMPLE") = xlWs.Range("B" & lngRow).Value
            rst("SAMPLE") = xlWs.Range("C" & lngRow).Value
            rst("SAMPLE") = xlWs.Range("D" & lngRow).Value
            rst("SAMPLE") = xlWs.Range("E" & lngRow).Value
            rst.Update
        Next
    xlApp.Quit
    Set xlApp = Nothing
    Set xlWb = Nothing
    Set xlWs = Nothing
    strFile = Dir()
Loop
rst.Close
Set rst = Nothing
End Sub

感谢您寻找

1 个答案:

答案 0 :(得分:0)

我决定简单地创建一个UPDATE查询来添加/填充前导零,UPDATE在数据加载到表中后运行。这是我能做的最好的,而不是修改上面的代码:

这是UPDATE查询的SQL:

x = left(yourfield & string(8,"0"), 8)

x = right(string(8,"0")& yourfield, 8)

or...

padlen = 8

x = left(yourfield & string(padlen,"0"), padlen)

x = right(string(padlen,"0")& yourfield, padlen)

谢谢大家!