2013-04-12 62 views
1

無法正常工作。使用帶變量的runSQL將文件列表循環添加到表格

我正在循環一個對話框生成的文件列表並插入到表中。我無法讓變量正常工作。查詢表達式中的語法錯誤(缺少運算符)。

Dim SQLCode As String 
Dim varFile As Variant 

Access.DoCmd.OpenQuery ("ClearFileList") 

Set fDialog = Application.FileDialog(1) 
With fDialog 
    .AllowMultiSelect = True 
    .Title = "Select One or More Files" 
    .Filters.Clear 
    .Filters.Add "Lineviewer Files", "*.CSV" 

    If .show = True Then 
     For Each varFile In .SelectedItems 
      SQLCode = "INSERT INTO Filelist ([FileName]) VALUES (" & varFile & ");" 
      Access.DoCmd.RunSQL SQLCode 

     Next 
    End If 
End With 

感謝

回答

0

領域[FileName]和文件名可變varFile都應該是文本數據類型。因此,當您構建SQL語句時,請在varFile的值附近添加引號。這樣數據庫引擎會將該值識別爲文本。

SQLCode = "INSERT INTO Filelist ([FileName]) VALUES ('" & varFile & "');" 

作爲一個方面來看,你不需要建立和執行INSERT語句給每個選定的文件。您可以使用dbAppendOnly選項將目標表作爲DAO記錄集打開。

Dim db As DAO.Database 
Dim rs As DAO.Recordset 
Set db = CurrentDb 
Set rs = db.OpenRecordset("Filelist", dbOpenTable, dbAppendOnly) 

然後添加一個行的每個選擇的項目。

For Each varFile In .SelectedItems 
    rs.AddNew 
    rs!FileName = varFile 
    rs.Update 
Next 

這種方法可能會更快,儘管可能會發現其中的差異。但它整齊地避免引用選定的項目,並且如果您的FileName是備忘錄數據類型,將容納大於255個字符的文件路徑名稱。

+0

我剛剛嘗試過「」「」「」,它工作。 '''''更好,謝謝 –

+0

不客氣。我修改了答案以包含我將使用的方法。看看你的想法。 – HansUp

+0

看起來不錯,我會用你的建議。 –