0

以下のコードを使用して、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

見てくれてありがとう

4

1 に答える 1

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)

みんな、ありがとう!

于 2012-12-03T20:32:36.010 に答える