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 示例。我在这里将 acOutputQuery
和 xcFormatTXT
分别用作 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()
函数,将格式作为参数。我考虑过使用对象将名称字符串映射到枚举,但我不知道这实际上有多大用处。我想如果你愿意,你也可以将输出对象作为参数,但我现在只打算使用查询对象。
现在,我只是在使用 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 示例。我在这里将 acOutputQuery
和 xcFormatTXT
分别用作 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()
函数,将格式作为参数。我考虑过使用对象将名称字符串映射到枚举,但我不知道这实际上有多大用处。我想如果你愿意,你也可以将输出对象作为参数,但我现在只打算使用查询对象。