2017-01-23 7 views
0

ユーザーが1つ以上のファイルを選択して1つのテーブルにインポートできるフォームを作成しました。ユーザーがファイルまたは複数のファイルを選択すると、インポートが完了したら、正しいファイルに関連して、各行にファイル名を追加する必要があります。テキストファイルの列にファイル名を追加するインポート

手動でファイル名を追加するようにクエリを設定することはできますが、これをより自動化された方法でどのように行うことができますか。たとえば、ユーザーがファイルを選択した場合、ファイル名を自動的に検出して追加するためにSQLクエリをコーディングする方法はありますか?ユーザーが複数のファイルを選択した場合、どのようにクエリが各行の正しいファイル名を書き込むことができますか?

Option Compare Database 

'Private Sub Command0_Click() 
Private Sub cmdFileDialog_Click() 

'Requires reference to Microsoft Office 12.0 Object Library. 

    Dim fDialog As Office.FileDialog 
    Dim varFile As Variant 

    'Clear listbox contents. 
    'Me.FileList.RowSource = "" 

    'Set up the File Dialog. 
    Set fDialog = Application.FileDialog(msoFileDialogFilePicker) 
    With fDialog 
     'Allow user to make multiple selections in dialog box. 
     .AllowMultiSelect = True 

     'Set the title of the dialog box. 
     .Title = "Please select one or more files" 
    .InitialFileName = "C:\Users\ABCCCCC\Desktop\January CMS reports for CCCCC" 

     'Clear out the current filters, and add our own. 

     .Filters.Clear 
     '.Filters.Add "Access Databases", "*.MDB; *.ACCDB" 
     .Filters.Add "Access Projects", "*.txt" 
     '.Filters.Add "All Files", "*.*" 

     'Show the dialog box. If the .Show method returns True, the 
     'user picked at least one file. If the .Show method returns 
     'False, the user clicked Cancel. 
     If .Show = True Then 
     'Loop through each file selected and add it to the list box. 
     For Each varFile In .SelectedItems 
      ' Me.FileList.AddItem varFile 
     Call InsertCMS_Reports_2ndSave(varFile) 
     Next 
     Else 
     MsgBox "You clicked Cancel in the file dialog box." 
     End If 
    End With 
End Sub 

モジュールコード:

Function InsertCMS_Reports_2ndSave(FileName As Variant) 
    'DoCmd.DeleteObject CopyOfCOMPRPT_CE, "CMS_Reports_2ndSave" 
    DoCmd.TransferText acImportFixed, "CMS_Reports_Import", _ 
    "CMS_Reports_Import", "C:\Users\ABCCCCC\Desktop\January CMS reports for CCCCC\FileName" 
    CurrentDb.Execute "UPDATE CopyOfCOMPRPT_CE SET FileName = 'HLTH_COMPRPT_1701011028174_h0062.txt' WHERE FileName is NULL", dbFailOnError 
End Function 

答えて

0

すでに働いている提供されたコードは、これはあなたのために働く必要があります提供

は、ここに私のフォームのコードです。

​​

問題がある場合は、SQL文字列の構文上の問題が考えられます。引用符が最も原因である可能性があります。問題がある場合は、デバッグ・ステートメントをコードに入れて、どのSQL文が生成されているかを確認してください。たとえば、

Function InsertCMS_Reports_2ndSave(FileName As Variant) 

    Dim strSQL as String 

    'DoCmd.DeleteObject CopyOfCOMPRPT_CE, "CMS_Reports_2ndSave" 
    DoCmd.TransferText acImportFixed, "CMS_Reports_Import", _ 
    "CMS_Reports_Import", "C:\Users\ABCCCCC\Desktop\January CMS reports for CCCCC\FileName" 

    strSQL = "UPDATE CopyOfCOMPRPT_CE SET FileName = '" & FileName & "' WHERE FileName is NULL", dbFailOnError" 
    debug.print strSQL 

    CurrentDb.Execute strSQL, dbFailOnError 
End Function 
関連する問題