如何在 C# 模块中嵌入 ms-access 表单?

2024-03-16

我们开发了一个相当重的 ms-access 应用程序,有大约 300 个表单(是的!)。当代码实例化这些表单(而不仅仅是“打开”它们)时,我们可以在屏幕上显示同一表单的多个实例。

为了绕过 VBA 的限制及其对一些面向对象概念(例如继承、接口、封装等)的糟糕实现,代码正在管理:

  • 由表单的所有活动实例组成的 Windows 集合。
  • 一个“幽灵窗口”对象,它包含我们的代码所需的所有额外属性和方法。

因此,举个例子,当我想达到我的一个实例的标准属性时,我可以写:

MyWindows.accessWindow(hWnd).name 

其中hWnd是Windows给出的句柄,命名为标准form().name属性

但如果我想达到我的一个实例的特定属性,我可以写:

MyWindows.ghostWindow(hWnd).originalRecordset

其中“originalRecordset”保存原始 ADODB.recordset,该记录集在表单首次实例化时加载(意味着在用户进行任何更改之前......可能很有趣!)

它工作得很好,但对其进行编码可以成为真正的 PITA,特别是当人们知道在 C# 中执行类似的操作有多么简单时,只要可以将 MS-Access 表单对象封装到更通用的 C# 对象中即可。那么问题来了:能否将 MS-Access 表单嵌入到自制的 C# dll 中?可行吗?

我不期望得到完整的答案,但我期待一些帮助,以走上正确的道路。朋友们有什么想法吗?


这应该可以通过办公自动化来实现。

简而言之,您使用 C# 启动访问应用程序,然后为您的表单获取正确的对象模型,就像在 vba 中使用它们一样。

如果您想使用更多的 c#(好)和更少的 vba(meh)来逐渐改进/重构您的访问应用程序,这可能是第一步。

MS 知识库文章中的更多详细信息“如何使用 Visual C# 自动化 Microsoft Access” http://support.microsoft.com/kb/317114/en-us

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 C# 模块中嵌入 ms-access 表单? 的相关文章

随机推荐

  • 实体框架中的类和接口层次结构?

    我有两个相关的类 它们共享一个公共接口 并且都存储在同一个基础数据库表中 然而 实体框架生成一个公共类 而我确实需要两个不同的类 我该如何解决这个问题 最好使用基类而不是接口吗 如何更改 EF 模型以提供映射到一张表的两个类 Edit Ac
  • 用于获取虚拟访客所有者的 Softlayer API

    是否有任何 API 可以获取虚拟访客的所有者 已配置虚拟访客的用户 我只能看到有权访问虚拟访客 API 的用户 Thanks 请使用过滤器尝试以下请求 https username apikey api softlayer com rest
  • 模板函数只匹配某些类型?

    我想定义一个函数模板 template
  • 跳过 mysql 中重复条目的插入

    我有一个最喜欢的表 其中包含一些字段 例如login id driver id 一个login id可能有许多driver id 然后我使用批量更新 没有任何检查 driver id 是否存在于表中 输入数据将是驱动程序 id 的集合 如果
  • 如何解析 firebase 云函数上的多部分/表单数据?

    根据此处的文档 我一直在尝试将带有文本和图像文件的多部分 表单数据对象发布到我的云功能之一 https cloud google com functions docs writing http multipart data and file
  • UITextField 在 iOS 中将占位符颜色设置为深色

    我尝试过设置UITextField 占位符 颜色为深色 NSAttributedString search NSAttributedString alloc initWithString Search attributes NSForegr
  • 使用 AppAuth 在 swift4 中进行身份验证时会显示附加警报

    我在用AppAuth0 90 0 用于使用外部身份验证服务器进行身份验证 用户可以在其中登录 以便应用程序接收适当的身份验证令牌 最近 升级到 swift 4 后 在发送到身份验证服务器之前 我收到以下警报 应用程序名称 想要使用 exte
  • 将地图标记添加到 Open Layers 6

    我的问题很简单 如何在特定的经度和纬度处添加标记 穿过开放层示例页面 https openlayers org en latest examples icon html我创建了一张带有标记的新地图 我使用添加了标记new ol Featur
  • 如何使用 angularJS 对字符串数组而不是对象数组进行 orderby

    我在 angularJS 中有一个字符串数组 我想对其元素进行某种排序 我尝试了这段代码 但它不起作用 我不知道为什么有人有任何想法 div Country Name br div
  • NextGen Mirth:循环遍历所有 OBR/OBX 段以输出到 Document Writer

    大约 10 年前 我使用 Mirth 意识到我几乎忘记了所有事情 而且我的很多资源都不再可用 我希望迭代 OBR 和 OBX 段 以提取 OBR 4 2 7 1 16 2 用作节标题 并提取 OBX 3 2 5 1 7 1 字段以在报告下方
  • 如何将浮点数组/列表转换为 TFRecord?

    这是用于将数据转换为 TFRecord 的代码 def int64 feature value return tf train Feature int64 list tf train Int64List value value def by
  • 自定义 Woocommerce 中每页的我的帐户订单列表帖子

    Woocommerce 2 6 x 在用户帐户 我的帐户 区域有一个特殊页面 其中显示用户以前的订单 此页面现已分页 默认显示 15 个项目 页 Here the screenshot of the woocommerce storefro
  • 使用“gdal”将大彩色图像保存为“GTiff”

    我正在尝试保存尺寸较大的图像 15000 80000 3 这个数组是一个 numpy 数组 我初始化为im final np zeros 15000 80000 3 为了节省费用 我使用gdal像这样 dst ds gdal GetDriv
  • 为什么MouseEvent的getX() getY()看起来与真实坐标有偏移?

    我有一个JPanel嵌入在一个JFrame JPanel添加于CENTER of BorderLayout 我正在使用以下代码来绘制它 但是MouseEvent s getX and getY 似乎偏移了真实坐标 为什么 相关代码是 pri
  • Firebase Firestore 如何识别离线读取

    我正在使用 Firebase Firestore 但在读取操作时遇到问题 我使用 onCompleteListener 在里面 如果操作成功或失败 我会调用不同的回调 问题是 如果出现网络问题 onCompleteListener被调用 但
  • 使用 AspectJ 进行 Eclipse 调试单步调试

    我使用 AspectJ 开发工具 插件设置了 Eclipse 我正在尝试调试一些使用 AspectJ 的代码并逐步执行它 但它无法匹配源代码行 因为 AspectJ 在编译时添加了额外的内容 似乎没有人抱怨这似乎是一个重大缺陷 无法调试 所
  • 调用多个 aws lambda 函数

    我们如何依次调用多个 AWS Lambda 函数 例如如果 AWS Lambda 链由 8 个独立的 lambda 函数组成 每个函数模拟 1 秒的处理事件 然后调用链中的下一个函数 我不建议直接使用invoke启动您的功能 相反 您应该考
  • 如何从 Cocoa (Mac OS X) 访问 SQL Server?

    正如问题所说 如何在 Mac OS X 10 5 上从 Cocoa 访问 Microsoft SQL Server 2005 如果可能的话 数据库驱动程序应该是免费的 付费解决方案也可以 如果您使用 ODBC Actual Technolo
  • .NET:AssemblyVersionAttribute 中的大修订号

    我们约定将我们的构建版本控制为 主要 次要 微 修订 例如2 1 2 33546 我们的构建脚本会自动更新包含以下内容的 AssemblyInfo cs 文件 assembly AssemblyVersion x y z w 为了将版本号嵌
  • 如何在 C# 模块中嵌入 ms-access 表单?

    我们开发了一个相当重的 ms access 应用程序 有大约 300 个表单 是的 当代码实例化这些表单 而不仅仅是 打开 它们 时 我们可以在屏幕上显示同一表单的多个实例 为了绕过 VBA 的限制及其对一些面向对象概念 例如继承 接口 封