我的Access导出到.csv模块有问题。一切正常在其他部分工作,如导入一个列表,导入第二个列表,执行查询和导出 IF 我没有更改我的输出文件名,我迷路了,不知道为什么更改输出文件名导致访问显示错误:
运行时错误:3027: 无法更新。数据库或对象是只读的。
一切正常如果输出文件保持默认。
以下模块代码:
Public Sub exportQuery(exportSQL As String)
Dim db As DAO.Database, qd As DAO.QueryDef
Dim fd As FileDialog
Set fd = Application.FileDialog(msoFileDialogSaveAs)
Set db = CurrentDb
'Check to see if querydef exists
For i = 0 To (db.QueryDefs.Count - 1)
If db.QueryDefs(i).Name = "tmpExport" Then
db.QueryDefs.Delete ("tmpExport")
Exit For
End If
Next i
Set qd = db.CreateQueryDef("tmpExport", exportSQL)
'Set intial filename
fd.InitialFileName = "Deduplicated list_" & Format(Date, "mmddyyy") & ".csv"
If fd.Show = True Then
If Format(fd.SelectedItems(1)) <> vbNullString Then
DoCmd.TransferText acExportDelim, , "tmpExport", fd.SelectedItems(1), True
End If
End If
'Cleanup
db.QueryDefs.Delete "tmpExport"
db.Close
Set db = Nothing
Set qd = Nothing
Set fd = Nothing
End Sub
答案 0 :(得分:1)
抱歉:上面的评论中没有注意到 @Andre 为我提供了解决方案。非常感谢
好的,我找到了解决方案。问题是,当您键入自定义名称时,IT必须具有.csv扩展名。我实现了使用.csv
附加文件名的函数Function getCSVName(fileName As String) As String
Dim pos As Long
pos = InStrRev(fileName, ".")
If (pos > 0) Then
fileName = Left$(fileName, pos - 1)
End If
getCSVName = fileName & ".CSV"
End Function
并在导出模块中使用它:
DoCmd.TransferText acExportDelim, , "tmpExport", getCSVName(fd.SelectedItems(1)), True
答案 1 :(得分:0)
当我在上面的代码中输入一个简单的SQL命令时,看起来很好,并在本地工作。 我建议检查您尝试执行的SQL命令。