【发布时间】:2012-07-18 20:40:00
【问题描述】:
我在问是否可以在 .Net 表单中托管 Microsoft Access 表单。
不,我没有发疯,我们正在维护一个完全用 VBA 编写的庞大系统,该系统由一个不太了解 VBA 的人尝试使用 Microsoft Access 作为 IDE。它基本上是数千行意大利面条式代码,虽然我们很想废弃它并从头开始,但这不是一个选择。
因此,我们正在尝试改进现有的功能,在这种特殊情况下,如果我们能够以某种方式在 .Net Windows 窗体中托管 Microsoft Access 表单,那将非常有帮助,因为我们可以与 .Net 的专有硬件进行交互。比 VB6 更有效。
我们目前有一个 .Net 应用程序与用户随时打开的许多 MS-Access 数据库一起在计算机上运行,并且 .Net 应用程序使用 MS Access Interop 与这些数据库交互并取得不同程度的成功。这是因为它使用表单标题和文件名/位置来获取数据库的句柄来完成它需要做的事情,并且还依赖于用户不干扰/关闭应用程序/将数据库移动到他们的桌面等。这是一个有点乱。
因此,我想问是否有可能以某种方式在 .Net Windows 表单中托管 Microsoft Access 表单,方法是将表单本身添加为控件或子表单,以使我可以直接访问所有来自 .Net 的表单上的控件?
【问题讨论】:
-
这有点像将火箭发动机绑在兴登堡号上。
-
您甚至可以在 .NET 中添加对 Access 的引用吗?如果是这样,请查看对象浏览器并查看是否有任何控件。我能够添加一个名为 Access 的引用,但它没有附带任何 UI 控件。
-
@CodeSlave 现在有一个想法!
-
@Blam 是的,如果您使用的是 NuGet,您可以直接打开添加引用对话框并搜索 Access,如果不是,您需要在添加引用框中滚动一下才能找到Microsoft.Office.Interop.Access,12.0 让您使用 2007,14.0 让您使用 2010,15.0 让您使用 2013!
-
如果您托管的是完整版 Access 的表单,也许可以。运行时 EULA 禁止您将其用于数据库功能以外的目的,并且有品牌要求。
标签: .net winforms ms-access interop