gpt4 book ai didi

powershell - DoCmd.OutputTo 使用 PowerShell - 第一个参数为 'wrong data type'

转载 作者:行者123 更新时间:2023-12-05 04:31:08 24 4
gpt4 key购买 nike

我正忙于将 MS Access 中的一些自动化进程从 VBA 迁移到 PowerShell。我的 VBA 没问题,但我是 PowerShell 的新手,似乎遗漏了一些东西。

使用 PowerShell 我有一些用于文件名等的变量,并且数据库是打开的。我运行了一个查询并在 acViewReport View 中运行了所需的报告。在 VBA 中,我的下一行如下:

DoCmd.OutputTo acOutputReport, "RMyReport", "PDFFormat(*.pdf)", sFilepath, False, "", , acExportQualityPrint

这在 VBA 中运行良好。据我所知,等效于 PowerShell 的应该是:

$Access.DoCmd.OutputTo([acOutputObjectType]::acOutputReport, "RMyReport", "PDFFormat(*.pdf)", $filepath, 0, "","", 0)

我已经按照以下格式包含了相关参数所需的枚举:

enum acView {
acViewNormal # 0 (Default) Normal view
acViewDesign # 1 Design view
acViewPreview # 2 Print Preview
acViewPivotTable # 3 PivotTable view
acViewPivotChart # 4 PivotChart view
acViewReport # 5 Report view
acViewLayout # 6 Layout view
}
enum acOpenDataMode {
acAdd # 0 The user can add new records but can't view or edit existing records.
acEdit # 1 The user can view or edit existing records and add new records.
acReadOnly # 2 The user can only view records.
}
enum acOutputObjectType {
acOutputTable # 0 Table
acOutputQuery # 1 Query
acOutputForm # 2 Form
acOutputReport # 3 Report
acOutputModule # 5 Module
acOutputServerView # 7 Server View
acOutputStoredProcedure # 9 Stored Procedure
acOutputFunction # 10 User-Defined Function
}

但是得到如下错误:

An expression you entered is the wrong data type for one of the arguments.
At line:1 char:1
+ $Access.DoCmd.OutputTo([acOutputObjectType]::acOutputReport, "RMyRepo ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OperationStopped: (:) [], COMException
+ FullyQualifiedErrorId : System.Runtime.InteropServices.COMException

我以某种方式为 arg1 传递了不正确的数据类型,但我假设使用 MS 文档中的枚举会让我走上正确的道路。

为了解决问题,我尝试了以下变体但无济于事:

$Access.DoCmd.OutputTo(acOutputReport, "RMyReport", "PDFFormat(*.pdf)", $filepath, 0, "","", 0)
$Access.DoCmd.OutputTo(3, "RMyReport", "PDFFormat(*.pdf)", $filepath, 0, "","", 0)
$Access.DoCmd.OutputTo(acOutputReport, "", "PDFFormat(*.pdf)", $filepath, 0, "","", 0)
$Access.DoCmd.OutputTo(3, "", "PDFFormat(*.pdf)", $filepath, 0, "","", 0)

关于如何调整我的 OutputTo 方法的任何建议都会有很大的帮助,我完全被难住了。

最佳答案

Encoding 是 Variant,不是空字符串,因此请尝试省略最后未使用的参数:

$Access.DoCmd.OutputTo([acOutputObjectType]::acOutputReport, "RMyReport", "PDFFormat(*.pdf)", $filepath)

关于powershell - DoCmd.OutputTo 使用 PowerShell - 第一个参数为 'wrong data type',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71892320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com