Microsoft Access DoCmd.OutputTo无法识别acOutPutQuery

时间:2018-09-28 14:26:46

标签: powershell ms-access jscript

现在,我只是在使用powershell,但我打算将此概念移植到JScript并在.NET中使用ActiveXObject('Access.Application') jsc。我已使用$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,所以我很困惑。

1 个答案:

答案 0 :(得分:1)

好的,抱歉,我花了一段时间才回来。感谢@HansUp引导我走上正确的道路。我使用了他发布的AcOutputObjectType enumeration 链接以及MS Constants Enumeration。我将同时提供一个powershell示例和一个MS JScript示例。在这里,我将this.videoPlayeracOutputQuery分别用作xcFormatTXT1,但是上面两个链接中还有许多其他内容。

powershell:

"MS-DOS"

MS JScript:

$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")

这两个既快又脏。由于现在可以在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 } 函数,该函数将格式作为参数。我考虑过使用一个对象将名称字符串映射到枚举,但是我不知道它实际上有多有用。我想,如果您愿意,也可以将输出对象作为参数,但是我现在只打算使用查询对象。