【问题标题】:Running VBA functions in a server side Access database from a WCF service从 WCF 服务在服务器端 Access 数据库中运行 VBA 函数
【发布时间】:2011-11-23 20:38:03
【问题描述】:

我已经研究了好几天,我的 WCF 服务通过 com/interop 创建了一个 Access 对象。我已经为 Access 对象运行了OpenCurrentDatabase 调用,没有出现错误,但Application.CurrentDB 仍然是空/空。如果CurrentDB 什么都不是,那么我肯定不能打电话给Application.Run "myFunction" 我意识到WCF 服务并不意味着是用户交互的,但这是一个很长的故事,为什么我要走这条路。基本上我需要尽快而不是稍后准备好概念证明,并且替代(正确)路线涉及对大型复杂访问 VBA 应用程序的完全重写。这不是权限问题,我已将 IIS 用户名添加到安全选项卡中。我真正需要的是一种将Environment.UserInteractive 设置为true 的方法,这样我的WCF 服务就可以在我的服务器机器上创建一个Access 实例,运行VBA 函数,关闭,返回true。我将 VS 2010 用于 WCF,将 IIS 7 用于我的服务器,将 Access 2010 用于 VBA 应用程序。请帮忙!

【问题讨论】:

  • 能否让数据库在启动时运行该功能?即,制作一个作为运行进程的启动表单的表单,或制作一个调用适当代码的 AutoExec 宏,这样您就不必从 .NET 执行任何其他操作。
  • 是的,我在研究中遇到了这个问题,但我正在考虑将其作为最后的手段,因为整个 VBA 程序并不打算从头到尾一次运行。一个功能导出一个工作表供我们的承销商完成并发回给分析师。一旦返回,分析人员将启动导入功能。走这条路是可能的,但概念验证最终会是我们坐在一个房间里看着它工作 10 分钟,而老板不会看到任何事情发生。
  • 我不确定 autoexec 宏是否允许参数,我想我可以将要运行的函数的名称写入 txt 文件或数据库,然后让 autoexec 宏检查文件运行哪个函数。什么马戏团!
  • 我猜你应该期望尝试从 WCF 服务进行访问自动化 :-) 你最终可能会像我们对应用程序所做的那样 - 将 VBA 逻辑重写到 VB.Net 库中。
  • 好的,这是我愚蠢的解决方案。 WCF 服务会将函数名和参数信息写入服务机器上的数据库。服务器机器上的桌面应用程序将监视数据库中的新条目。一旦发现 WCF 服务写入的新条目,它将执行 access DB 函数并将结果写回服务数据库。 WCF 服务将监视数据库的结果并在找到后将其发回。

标签: asp.net vb.net wcf ms-access vba


【解决方案1】:

答案是让 WCF 服务将访问宏名称写入数据库,并让服务器计算机上的桌面应用程序监视数据库。桌面应用程序加载访问、执行操作并在完成后写回数据库。 WCF 服务监视数据库等待“操作完成”状态并返回结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2011-04-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多