在批处理作业中使用WinAPIServer和SysExcelApplication类

时间:2012-12-19 09:04:14

标签: batch-file jobs x++ axapta

我创建了一个创建用查询填充的Excel文件的批处理作业,问题如下:

我在代码中使用了WinAPI和SysExcelApplication类。调试后,我看到这些类在使用批处理作业启动时会导致问题。我使用了winAPIServer和fileIOPermission类的托管权限,我的问题仍然存在。

在没有批处理作业的情况下启动时,我的代码运行正常,没有错误。

有没有人有解决我问题的想法?

这是错误消息: 会话服务器端替换(RunAs)尝试调用仅不可用于客户端处理的方法。

3 个答案:

答案 0 :(得分:2)

您无法在服务器上执行的批处理作业中使用SysExcelApplication,因为Excel是需要访问客户端UI的客户端应用程序,这与模拟的服务执行不兼容。

我知道这不是应该的逻辑,但几个月前,当我在客户端遇到这个问题时,我得到了Microsoft Engeenering Team的回答。

如果你可以通过使用CSV文件或类似的东西来避免它,那么可靠的解决方案根本不使用Excel;或者让这些批次在客户端层上运行,这会强制您始终在客户端会话上打开运行批次的客户端(并使用客户端许可证)

答案 1 :(得分:1)

在WinAPI方面,有一个WinAPIServer类与WinAPI做同样的事情。这是我使用的代码示例:

    if (xGlobal::clientKind() == ClientType::Client)
    {
        winapi::copyfile(File, strReplace(File,SourceFolder, FailureFolder));
        winapi::deletefile(File);
    }
    else
    {
        winapiServer::copyfile(File, strReplace(File,SourceFolder, FailureFolder));
        winapiServer::deletefile(File);
    }

答案 2 :(得分:0)

在Dynamics AX中,您可以创建xml文件。然后创建并调用PowerShell脚本以将xml文件转换为excel文件。这一切都可以在AX批处理作业中完成。