无法让它发挥作用。
我循环浏览对话框生成的文件列表并插入表格。我无法让变量正常工作。查询表达式中的语法错误(缺少运算符)。
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 :(得分: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个字符的文件路径名。