1
Set f = Application.FileDialog(3)
f.AllowMultiSelect = True
f.InitialFileName = "S:\Formware\outfile\ucppt12\Storage"
f.Filters.Clear
f.Filters.Add " Armored TXT Files", "*.asc"
    If f.Show Then
    For Each varItem In f.SelectedItems
        strFile = Dir(varItem)
        strFolder = Left(varItem, Len(varItem) - Len(strFile))
        P = strFolder & strFile
        DoCmd.TransferText acImportDelim, "UCPP Import Specification", "ucppltr", P, False

    Next
    End If
strUpdate = "PARAMETERS fileName Text;" & vbCrLf & _
"UPDATE ucppltr" & vbCrLf & _
"Set [File Name] = fileName"
Debug.Print strUpdate
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strUpdate)

'Pass file list to query
qdf.Parameters("fileName") = strFile

qdf.Execute dbFailOnError
Set qdf = Nothing
Set db = Nothing
Set f = Nothing

ご覧のとおり、通常、一度に約 5 ~ 6 個のテキスト ファイルをインポートしていますMultiSelect。ファイル名のフィールドがあり、レコードのインポート元のファイルに基づいて入力したいと考えています。これまでのところ、最初の 4 つまたは 5 つだけを最後のファイル名で上書きし、すべてのレコードに同じファイル名を付けています。インポート時にフィールドにデータを入力するTransferText方法や、その他の方法があるかどうかはわかりません。

4

1 に答える 1

1

UPDATEを含めるようにステートメントを変更しますWHERE [File Name] Is Null

次に、各 の直後にTransferText、現在のファイル名をUPDATEクエリに入力して実行します。

strUpdate = "PARAMETERS fileName Text;" & vbCrLf & _
    "UPDATE ucppltr" & vbCrLf & _
    "Set [File Name] = fileName" & vbCrLf & _
    "WHERE [File Name] Is Null;"
Debug.Print strUpdate
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strUpdate)

Set f = Application.FileDialog(3)
f.AllowMultiSelect = True
f.InitialFileName = "S:\Formware\outfile\ucppt12\Storage"
f.Filters.Clear
f.Filters.Add " Armored TXT Files", "*.asc"
If f.Show Then
    For Each VarItem In f.SelectedItems
        strFile = Dir(VarItem)
        strFolder = Left(VarItem, Len(VarItem) - Len(strFile))
        p = strFolder & strFile
        DoCmd.TransferText acImportDelim, _
            "UCPP Import Specification", "ucppltr", p, False
        'Pass file name to the query
        qdf.Parameters("fileName") = strFile
        qdf.Execute dbFailOnError
    Next
End If
于 2013-07-24T16:11:28.490 に答える