Access编程的最佳实践

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

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

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


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

MS Access作为企业软件

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

在MS-Access上使用多个程序员

有关从MS-Access使用SQL Server GUIDS的建议

我必须承认Access的一个主要限制是有限的对象模型。 我特别恼火的是缺乏将我自己的属性和方法添加到Form对象的可能性。 我最近通过创建2个额外的对象发现了这个问题的有效转换:

  • “AllMyForms”对象实际上维护着两个对象集合:一个是标准的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”值的总和。


    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


    当我进行Access编程时,我必须做的一件事情就是使用大量隐藏字段来实现绑定。 我确信我使场地不可见,并且将场地的颜色改变为前景白色和背景红色,以便人们知道这是一个隐藏的领域。

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

    链接地址: http://www.djcxy.com/p/43297.html

    上一篇: Best practices in Access programming

    下一篇: Only first UIView added view addSubview shows correct orientation