2009-07-09 74 views
5

我是rails开发者中的80%ruby,但仍需要做一些Access VBA工作。如何在Access VBA + SQL开发中提高生产力?

其中有些是非常糟糕的系统,已经建成很久以前,由全球大企业使用,所以大部分作品只是提高旧系统。

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

现在,我真的觉得我需要帮助,只是想知道有没有人可以建立优雅的VBA应用程序遵循面向对象的方式?

如果你能向我展示一段代码来证明它有多好,谢谢。

+0

我是谁试图对接成OO设计接入用户。我可以通过http://www.tek-tips.com/viewthread.cfm?qid=1552745&page=1 查询我的问题,我想我可以帮助解答,但需要知道您的工作内容:用户界面,数据维护,分层数据还是什么?正如Rik Garner所说,OO对Access和VBA来说并不自然。面向对象的技术仍然很有价值,但这是一个片段的很大范围。 – Smandoli 2009-07-09 16:16:59

+0

我使用面向对象的相关技术来管理多个表单,保持代码可重用,最重要的是处理递归数据。大卫芬顿的回答与我上面的评论有关。面向对象的方面是适用的,你可以使用你的经验来轻松实现高雅的东西。但有助于了解大卫所描述的OO不适用的情况。 – Smandoli 2009-07-10 15:40:29

+0

六年后,这仍然是一个有趣的问题:你是如何得到这些答案的? – 2016-04-25 19:05:37

回答

8

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

毫无疑问,ms-access是一个复杂的developmet系统。

您可以在访问中构建华丽的下降死亡应用程序。看看这些截图:

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

注清凉丝带在上面的屏幕截图。

问题是你无法在一天中学习Unix,并且你无法在一天内学习Oracle。您也无法在一天内学习MS访问。如果您提供的这些应用程序保持复杂,那么聘请一位拥有4-5年经验的开发人员就是您需要的。这个想法,不知何故,你将尽快赶上ms访问速度,然后说vb.net,或c#在这里真的是一个虚假的概念。

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

VB6是在公园散步比较访问。 VB6表单很简单,但访问中的表单非常复杂(我们的表单的事件和属性数量约为3倍)。例如,在访问中,我们有两个事件在窗体加载时(启动时和加载时)触发。 VB6表单(甚至是.net表单)只有一个事件。开放事件有一个取消选项。如果您设置了取消= true,则表单将不会加载并且不会显示。

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

从逻辑上说,这意味着在窗体上设置变量或控件初始值的代码需要放置在加载事件中(实际上,控件不能修改,只能在打开的事件中检查)。因此,在典型的表单加载中发生的两个进程之间存在非常好的粒度和区别。同样有趣的是,市场上的大多数产品都没有这两个单独的事件。

作为一名开发人员,因此您将相应的代码放在适当的位置并使用正确的事件。在使用访问权限时需要一些经验来确定哪些事件用于这些事情。你可以问问是否有一本书可以解释这个问题,但这就像是问有没有一本书告诉你什么时候使用组合框而不是列表框?我不认为有这样一本书。

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

我有谈论使用MS访问类对象,而当一篇文章,在这里使用它们:

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

如果你正在寻找代码样本从一切形式的报道使用窗户API,有很大的参考是在这里:

,只是把玩各地访问不会教你

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

1

你有我的同情 - 访问VBA不是像Ruby那样的任何意义上的面向对象。在Access中开发时,你将不得不改变你的想法;这样的应用程序几乎总是围绕着数据行和集而不是对象的概念。用户界面通常绑定到数据行,并以隐藏大量管道的方式进行设置。

既然可以在Access中小心谨慎地构建完美体面的可维护应用程序。祝你好运。

+0

感谢您的回答,太棒了! Access VBa令人痛苦,你对如何学习一些技巧有什么想法吗?像一些截屏视频网站? – 2009-07-09 10:03:19

1

的一件事是如何创建和使用独立的类模块。它们有一些面向对象的方面,但不是很多,但是它们可以使你的代码更易于管理,因为你可以在独立的类模块中包装很多操作,然后把它当作一个可以拥有的对象多个实例。你不会得到继承和多态以及OO福音书中的其他许多流行语,但是如果你从未广泛使用它,值得看看他们能做些什么。