Microsoft Access DoCmd.OutputTo 无法识别 acOutPutQuery

Microsoft Access DoCmd.OutputTo not recognizing acOutPutQuery

现在,我只是在使用 powershell,但我计划将这个概念移植到 JScript 并使用 .NET jsc 和 ActiveXObject('Access.Application')。我使用 $accessapp.DoCmd.OpenQuery("MyQuery") 打开我的查询,我可以看到它是使用 $accessapp.CurrentData.AllQueries("MyQuery") 加载的。我想使用 $accessapp.DoCmd.OutputTo(acOutputQuery, "MyQuery",<acFormat>, <file>),但由于某种原因,我不断收到错误消息:

Unexpected token 'acOutputQuery' in expression or statement

只是 运行 $accessapp.DoCmd.OutputTo 表明这是预期的:

void OutputTo (AcOutputObjectType, Variant, Variant, Variant, Variant, Variant, Variant, AcExportQuality)

我看到的每个资源,包括 Microsoft OutputTo documentation 都以这种方式使用 acOutputObjectType,所以我完全被难住了。

好的,对不起,我花了一段时间才回来。感谢@HansUp 引导我走上正确的道路。我用了AcOutputObjectType enumeration link he posted as well as the MS Constants Enumeration。我将给出一个 powershell 示例和一个 MS JScript 示例。我在这里将 acOutputQueryxcFormatTXT 分别用作 1"MS-DOS",但是上面两个链接中还有很多其他的。

powershell:

$acc = New-Object -com Access.Application

$acc.OpenCurrentDatabase("<path_to_file>.accdb")

$acc.DoCmd.OpenQuery("MyQuery")

$acc.DoCmd.OutputTo(1,"MyQuery","MS-DOS", "<path_to_output_file>.txt")

MS JScript:

function writeToTextFile(dbPath,queryName,outputPath){

    var acc = new ActiveXObject("Access.Application"); //create new COM instance
    acc.OpenCurrentDatabase(dbPath+".accdb"); //open the database
    if(!acc.CurrentData.AllQueries(queryName).IsLoaded){
        acc.DoCmd.OpenQuery(queryName); //load the query if it is not loaded yet
    }

    acc.DoCmd.OutputTo(1,queryName,"MS-DOS",outputPath+".txt"); //write to file

}

这两个有点快和脏。因为我现在可以在 JScript 中使用它,所以我可能会制作一个 writeToFile() 函数,将格式作为参数。我考虑过使用对象将名称字符串映射到枚举,但我不知道这实际上有多大用处。我想如果你愿意,你也可以将输出对象作为参数,但我现在只打算使用查询对象。