6

我想知道一些可以改进使用 Access 和 VBA 编程语言设计解决方案的过程的想法。当然,我不是在谈论一般的最佳编程实践,而只是与 Access 和 VBA 直接相关的那些。

大家都知道,VBA对面向对象的编程支持很差,没有继承、多态等等。那么如何同时保证 DRY 和 KISS 呢?有一些解决方案如何在 VBA 中实现其他语言中常见的模式和策略,但坦率地说,它们往往过于复杂。其中哪些值得实施?

在我开始一个新的 Access 项目(如果有的话)之前,我希望收集一些最佳实践,因为根据我的经验,我知道在 Access 中使用 VBA(以及使用 Access 本身),避免糟糕的设计概念和以凌乱、不可读和重复多次的代码结束。

4

3 回答 3

2

Access 编程最佳实践的权威来源是这本书:

Access 2002 桌面开发人员手册
http://www.amazon.com/Access-2002-Desktop-Developers-Handbook/dp/0782140092

如果您认真对待 Access 中的编程,您应该得到一份副本。这些人是专家。

我意识到这本书似乎过时了,但其中的所有信息仍然适用。我想它永远不会更新,因为这种开发有点小众领域。但是 Access 内部并没有发生太大变化(它是仅存的仍然使用相当于 VB6 方言的软件开发工具之一),而且书中的大部分信息仍然很好。

专注于客户端/服务器开发的配套书籍在这里:

Access 2002 企业开发者手册
http://www.amazon.com/Access-2002-Enterprise-Developers-Handbook/dp/0782140106

于 2009-09-26T16:53:28.490 回答
2

我想在这里添加一些与同一问题或其他方式相关的其他问题和答案。这些指针可能会导致我自己对这些问题的回答,但不要犹豫,浏览其他人的答案!

MS Access 作为企业软件

测试 MS-Access 应用程序的最佳方法

在 MS-Access 上与多个程序员合作

关于使用 MS-Access 中的 SQL 服务器 GUIDS 的建议

我必须承认,Access 的主要限制之一是有限对象模型。无法将我自己的属性和方法添加到 Form 对象中,这让我特别恼火。我最近通过创建 2 个额外的对象找到了解决此问题的有效方法:

  • “AllMyForms”对象,实际上维护了 2 个对象集合:一个是标准 Access 表单集合,另一个是“customForm”对象的所有实例的集合。两个集合都使用已打开表单的 hwnd 属性进行索引(或者,更具体地说,是表单实例的 hwnd 属性,允许我打开同一表单的多个实例)。

  • “customForm”对象,它列出了我的自定义属性和表单实例的方法

这样,我可以参考以下属性:

accessForms:参考标准的属性和方法

AllMyForms.accessForm(hwnd).name

通过其 .hwnd 值引用访问表单的 .name 属性

顺便说一句,下面的 debug.print 会给我同样的结果:

? screen.ActiveForm.name
? AllMyForms.accessForm().name   'default value for hwnd is screen.activeForm.hwnd'

自定义表单:属性

AllMyForms.customForm(hwnd).selectClause

将引用用于创建表单实例的基础记录集的 SELECT 子句

自定义表单:方法

可用于 customForm 对象的 .agregate 方法将计算表单“列”的总和/最小值/最大值/平均值(即连续形式的控件的值总和):

AllMyForms.customForm().agregate("lineAmount","sum")

会给我显示在表单的当前/活动实例上的所有“lineAmount”值的总和。

于 2009-09-28T07:15:38.010 回答
0

当我进行 Access 编程时,我总是必须做的一件事是出于绑定原因使用大量隐藏字段。我确保我使该字段不可见,并将字段的颜色更改为前景白色和背景红色,以便人们知道这是一个隐藏的字段。

我使用的另一个最佳实践是为我的所有共享代码使用模块。养成将大量可重用代码放在模块中的习惯。

于 2009-09-27T04:00:01.457 回答