我想知道一些可以改进使用Access和VBA编程语言设计解决方案的过程的想法。当然,我不是在谈论一般的最佳编程实践,而只是与Access和VBA直接相关。
大家都知道,VBA具有较差的面向对象编程支持,没有继承,多态等等。那么如何一次确保DRY和KISS?有一些解决方案如何在VBA中实现其他语言模式和策略的通用,但坦率地说,它们往往过于复杂。其中哪些值得实施?
在我开始一个新的Access项目(如果有的话)之前),我希望收集最佳实践的集合,因为根据我的经验,我知道在Access中使用VBA(以及Access本身),避免错误是非常具有挑战性的设计概念,并以凌乱,不可读和重复的多次代码结束。
答案 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编程时,我总是要做的一件事是出于绑定原因使用了很多隐藏字段。我确保我使该字段不可见,并将字段的颜色更改为前景白色和背景红色,以便人们知道这是一个隐藏的字段。
我使用的另一个最佳实践是为所有共享代码使用模块。养成将大量可重用代码放入模块中的习惯。