如何在Access VBA + SQL开发中提高效率?

Shu*_*Liu 5 ms-access vba access-vba

我是rails开发人员的80%ruby,但仍需要做一些Access VBA工作.

其中一些是非常糟糕的系统,很久以前就已经建成,被全球大企业使用,因此大多数工作只是增强旧系统.

这些技术基本上是MS Access作为前端,链接表通过ODBC作为后端链接到SQL服务器.

现在,我真的觉得我需要帮助,只是想知道是否有人可以按照面向对象的模式构建优雅的VBA应用程序?

如果你能给我看一段代码以证明它有多好,那就更好了,谢谢.

Alb*_*lal 8

那么要记住的第一个问题是学习MS访问没有神奇的捷径.多年来,我学到了很多开发平台,从大型机系统,数据库系统,到PC上的手动编码汇编器.我从头开始编写了两个工资单系统(加拿大税收公式包含在这些系统中).一个系统从头开始编写Pascal,我甚至编写了自己的数据引擎.

毫无疑问,ms-access是一个复杂的开发系统.

您可以在访问中构建漂亮的外观丢失应用程序.看看这些屏幕截图:

http://www.fairsoftware.com/screenshots.aspx

请注意上面屏幕截图中的冷色带.

问题是你不能在一天内学习Unix,而且你不能在一天内学习Oracle.您也无法在一天内学习MS访问权限.如果您要维护的那些应用程序很复杂,那么聘请具有4 - 5年经验的开发人员就是您所需要的.想要以某种方式加快ms-access的速度,然后说vb.net,或者c#在这里真的是一个错误的概念.

事实上,我甚至会说你可以比学习MS访问更快地学习Oracle.虽然MS访问的学习曲线不是那么陡峭,但它很长.

与访问相比,VB6是在公园散步.VB6表单很简单,但访问中的表单非常复杂(我们的事件和属性数量约为给定表单的3倍).例如,在访问中,我们有两个事件在表单加载(on-open和on-load)时触发.VB6表单(甚至.net表单)只有一个事件.on-open事件有取消选项.如果设置cancel = true,则表单将不会加载,也不会显示.

从逻辑上讲,这意味着当您调用表单时,表单有两个不同的事件,用于两个不同的目的.因此,开启事件将具有用于验证和测试某些数据条件的代码(并允许您取消).如果未取消on-open事件,则会触发on-load事件并加载表单.

从逻辑上讲,这意味着在表单上设置控件的变量或初始值的代码需要放在on-load事件中(事实上,Controls不能修改,只能在on open事件中检查).因此,在典型的表单加载中出现的两个进程之间存在非常好的粒度和区别.值得注意的是,市场上的大多数产品都没有这两个独立的事件.

作为开发人员,您可以放置​​适当的代码并为给定目的使用正确的事件.使用访问权来确定用于这些事情的事件需要一些经验.你可以问一下是否有一本书可以解释这个问题,但这就像问是否有一本书告诉你何时使用组合框而不是列表框?我不认为有这样一本书.

组合框的文档将解释组合框的含义以及如何使用它.对于on open事件,文档访问也是如此.您可以阅读on-open的内容,但是作为开发人员,您必须弄清楚何时适合使用该事件.当适当使用组合框或列表框时,也是如此.在一天结束时,唯一的解决方案以及如何了解这些问题将成为您作为产品开发人员的体验.

我有一篇文章讨论在MS访问中使用类对象,以及何时在此处使用它们:

http://www.members.shaw.ca/AlbertKallal/Articles/WhyClass.html

如果您正在寻找从表格到报表以及使用Windows API的代码示例,那么这里有一个很好的参考:

http://www.mvps.org/access/