【问题标题】:Calling ms Access function from ASP.NET or any other Web Service从 ASP.NET 或任何其他 Web 服务调用 ms Access 函数
【发布时间】:2023-02-03 03:34:53
【问题描述】:

我正在尝试从 Visual Studio 中的 ASP.NET Web 应用程序调用 Microsfot Access 函数。我能够连接到访问数据库并调用表和查询。

string connstring = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source = " + filePath;
string query = "Select * from table";
OleDbConnection connect = new OleDbConnection(connstring);
OleDbCommand command = new OleDbCommand(query, connect);

但是,我正在努力从 Asp.net 中找到有关在访问数据库中调用函数的任何信息。

是否甚至可以从 MS Office 应用程序外部访问 MS 功能? Asp.net 或任何其他网络服务?

【问题讨论】:

  • 数据访问库是 ADO.NET,而不是 ASP.NET。 OleDbCommand 是一个 ADO.NET 类。 Office 应用程序也使用 OLE DB 进行连接。
  • 如果您谈论的是 Access 中的查询,那么我认为您可以像在适当的数据库中调用存储过程一样调用它。如果您谈论的是宏,那完全是另一回事。
  • 您将如何调用 Access 本身的函数?你会写什么 SQL 查询?这也是您需要在此处使用的内容。
  • 也许你需要在 Access 数据库中添加一个你的“函数”的例子,并解释当你调用它时你希望在 NET 端看到什么
  • 我尝试调用的 ms access 中的函数会进行大量计算并将结果存储到 Access local tables 中。我正在尝试调用访问计算函数并返回结果作为短期修复,直到访问应用程序可以在新的 Web 应用程序中重新设计(这可能需要很长时间才能创建)我还需要传递参数来调用函数

标签: c# asp.net web-services ms-access


【解决方案1】:

您在这里有 2 个单独的问题。

您想要从 Access 表中查询/提取数据。

这是“标准”公平,并且您使用 oleDB 提供程序(在大多数情况下)。事实上,odbc 提供程序通常是更好的选择。但是,让我们改天再讨论这个问题。

但是,您是否可以使用来自网站的访问数据文件?这并不是一个很好的选择,因为您需要在 Web 服务器上安装访问数据引擎。这通常是一个真正的问题,因为托管服务提供商不会(甚至不允许)安装 Access 数据引擎。

注意上面的单词选择非常小心:

我说的是访问数据引擎!!!那就是 ms-access 使用的数据引擎。

但是,如果你想运行/调用/使用/消费 VBA 代码?

然后您需要在该 Web 服务器上安装 ms-access。那是一场完全不同的球赛。虽然在 Web 服务器上安装 Access 数据引擎可能是一个挑战,但安装 Access 是一个完全不同的球类游戏。在大多数情况下,这种简单的情况不会被允许也不会发生。

现在,您可以在您的开发人员计算机上执行此操作。

但是,存在大量问题。

第一:

您必须使 MS-Access 安装的位大小与 Web 服务器的位大小相匹配。默认情况下,您的 Web 服务器将以 x64 位运行。所以,这意味着你要么:

确保安装了 ms-access x64 位。

或者

强制您的项目和 Web 服务器以 x32 位运行。

接下来:

CALL/USE/CONSUME/RUN/ENJOY 使用 VBA 代码例程?

然后你不能只打开数据库(使用 oleDB 提供程序),但你必须首先创建一个完整的 Access 实例。

当您创建该实例时,您还必须非常小心,因为在访问启动时,任何启动代码都会运行。 (启动表格,VBA 代码)。而且您无法控制执行此操作时发生的情况!

通常,您最好创建一个精简版的数据库和代码,并且只包含您调用的 VBA 例程。然后,您使用链接表到 actaul accDB 数据文件。

一旦您创建了一个完整的 ms-acces 运行实例,您就可以使用所有 VBA 代码例程。然而,这不是线程安全的,也不是什么好主意。是 word、excel 还是 Access?尝试从 Web 服务器创建此类应用程序的运行实例往往是一个非常糟糕的主意。在这些应用程序中弹出的任何类型的“提示”都意味着你在这一点上注定要失败,因为从 Web 服务器和 .net 代码,你不能点击或回答任何经常出现的 UI 提示启动此类应用程序。

我要做的是采用 VBA 代码,创建一个新的 vb.net 类(独立)。粘贴该代码,然后将 VBA 代码转换为 vb.net 代码。他们非常接近。如果您构建一个记录集帮助程序类,那么您现在可以非常轻松地将相同的 VBA 代码(或非常接近相同的代码)作为 vb.net 代码运行。

然后编译该类,然后将该程序集添加到您的 c# web 项目中,现在您的网站上运行了相同的代码和逻辑。

以上是我推荐的方法。

我时间紧迫,但也许今天晚上,我会回来发布如何从 c# web 应用程序调用/运行该 VBA 代码,但尽管可能,但它不受支持,在生产 web 服务器中更糟和网站?您确实没有太多选择来确保 ms-access 的完整工作版本已获得许可并安装在该 Web 服务器上。

【讨论】:

    猜你喜欢
    • 2013-08-09
    • 2018-04-05
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多