使用带有变量的runSQL将文件列表循环添加到表中

时间:2013-04-12 01:51:37

标签: sql access-vba

无法让它发挥作用。

我循环浏览对话框生成的文件列表并插入表格。我无法让变量正常工作。查询表达式中的语法错误(缺少运算符)。

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

由于

1 个答案:

答案 0 :(得分: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个字符的文件路径名。