1

很难让这个工作。

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

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

谢谢

4

1 回答 1

0

字段[FileName]和文件名变量varFile都应该是文本数据类型。varFile因此,请在构建 SQL 语句时的值周围添加引号。这样数据库引擎就会将该值识别为文本。

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 个字符的文件路径名。

于 2013-04-12T01:59:33.860 回答