Access编程的最佳实践

时间:2009-09-26 16:28:47

标签: ms-access vba rad

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

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

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

3 个答案:

答案 0 :(得分:2)

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

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

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

我意识到这本书似乎过时了,但其中的所有信息仍然适用。我想它永远不会更新,因为这种开发是一个利基领域。但Access并没有在内部发生任何变化(它是剩下的唯一剩余的软件开发工具之一,仍然使用的是VB6的方言),本书中的大部分信息仍然很好。

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

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

答案 1 :(得分:2)

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

MS Access as enterprise software

Best way to test an MS-Access application

Working with multiple programmers on MS-Access

Recommendations on using SQL server GUIDS from MS-Access

我必须承认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方法将计算表单“column”的总和/ min / max / avg(即连续形式的控件的值的总和):

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

将为我提供表单当前/活动实例上显示的所有“lineAmount”值的总和。

答案 2 :(得分:0)

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

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