【问题标题】:TransferSpreadSheet gives error 3027 "Cannot update. Database or object is read-only."TransferSpreadSheet 给出错误 3027“无法更新。数据库或对象是只读的。”
【发布时间】:2014-11-28 16:53:27
【问题描述】:

我正在尝试导出动态 SQL 语句的结果,但不断收到错误 3027“无法更新。数据库或对象是只读的。”。我正在使用 Access 2003。GetYearFromDirName(sFolder) 从目录结构中解析出一年,并将其用作 SQL 结果中的计算列。

这里是有问题的代码:

sSQL = "SELECT INDEXDB1.IFIELD1 AS TestArea, INDEXDB1.IFIELD2 AS TSID, INDEXDB1.IFIELD3 AS MapCoord, " _
    & "INDEXDB1.IFIELD4 AS Community, INDEXDB1.IFIELD5 AS Address, INDEXDB1.IFIELD6 AS DocNum, " _
    & "'" & GetYearFromDirName(sFolder) & "' AS Yr FROM INDEXDB1;"

'DoCmd.TransferSpreadsheet acExport, , sSQL, sFolder & "\" & BoxNum & ".csv"
'DoCmd.OutputTo acOutputQuery, "ExportRecs", acFormatXLS, sFolder & "\" & BoxNum & ".csv"

SaveToExcel sSQL, sFolder & "\" & BoxNum & ".csv"

来电:

Public Sub SaveToExcel(strSQL As String, strFullFileName As String)
Dim strQry As String
Dim db As Database
Dim Qdf As QueryDef

On Error GoTo SaveToExcel_err

strQry = "TempQueryName"

Set db = CurrentDb
'Set Qdf = db.CreateQueryDef(strQry, strSQL)

'DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, strQry, strFullFileName, True

'DoCmd.DeleteObject acQuery, strQry

With db
    ' Create permanent QueryDef.
    Set Qdf = .CreateQueryDef(strQry, strSQL)
    ' Open Recordset and print report.
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel3, strQry, strFullFileName, True
    ' Delete new QueryDef because this is a demonstration.
    .QueryDefs.Delete Qdf.Name
    .Close
End With


Exit Sub

SaveToExcel_err:
    MsgBox Error & " " & Err & " in sub SaveToExcel. Close program and start over."

End Sub

有没有更好的导出动态 SQL 语句结果的方法?最后,我需要一个 CSV 文件。

【问题讨论】:

    标签: ms-access vba ms-access-2003


    【解决方案1】:

    您可以在 Excel 中打开它,但 CSV 是 文本 格式,因此您需要使用 DoCmd.TransferText 而不是 DoCmd.TransferSpreadsheet。使用导出数据向导手动完成一次导出。当您这样做时,您需要创建并命名一个导出规范。这将指定逗号作为分隔符,双引号作为文本分隔符。您创建的导出规范的名称作为第二个参数传递给TransferText

    【讨论】:

    • 这是一个很好的建设性评论,指出了我的代码的一个真正问题。不幸的是,导出文件的名称也是动态的,所以我无法使用它。
    • 我最终使用文本文件编写 API 遍历记录集。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多