Access开发培训
网站公告
·Access专家课堂QQ群号:151711184    ·Access快速开发平台下载地址及教程    ·欢迎加入Access专家课堂微信群!    ·如何快速搜索本站文章|示例|资料    
您的位置: 首页 > 技术文章 > Access数据库-模块/函数/VBA

另辟蹊径,用VBA解决望天网友提出的计件工作量及工资等的统计计算问题

时 间:2013-07-25 15:49:49
作 者:cspa   ID:13806  城市:北京
摘 要:用VBA实现动态记录数条件下的行列转换,及数据行内容合并转换为列内容的问题。


正 文:


      望天网友在本网提出了一个计件工作产量条的实现问题。该问题的难点在于涉及动态记录数条件下的行列转换,及数据行内容合并转换为列内容。茼蒿和金宇老师均给予了热情回答。(见http://www.accessoft.com/bbs/showtopic.asp?id=19245)。特别是茼蒿老师给出了具体示例,该示例仅用几个宏、若干个预设表格及一系列的预设查询非常巧妙地解决了问题。

本人认为该示例的优点是运行速度较快,但也有2个缺陷。一是在实际应用系统设计中,适当使用预设或临时表或查询作为中间(或最终)结果的存储区,可加快系统运行速度,降低设计难度,是很好的方法。但为了实现一个统计功能而需预设若干个表格和一系列的查询,对于一个实际应用系统而言是非常麻烦,甚至是不可接受的。对日后的系统维护也会造成很大的困难。二是该示例的最终数据存储是用了一个预设有70个字段的表。这样,当结果列数超过70列时即会出错。从望天网友给出的实际数据看,仅621720一个月中就有多人的统计数据已达68列。如果统计时间再放宽一些,或工人兄弟们的革命干劲再高一些,统计结果超过100列那是轻松的事。

现本人试着换个思路,用VBA解决此问题。原则是不用预设任何表格和查询,且最大限度地动态适应实际数据,不预设限制条件。现拿出来供大家批评指正。以本人的VBA功力,示例中尚有一个问题没有解决。就是不知道VBA建立表时如何才能设置Unicode压缩项(手动建表时该项是默认设置的)。因此原想在模块中仅建立1个临时表,但系统会报“记录太大”的错误。无奈采用了建立2个临时表的方案。这样虽增加了些程序的复杂度,但也很好地提高了程序对大数据量的适应性。(仍然希望各位老师对用VBA建立表时如何设置Unicode压缩项问题给予指导)

以本人的access知识水平看,望天网友的问题是一个非常好的考题。用VBA解决此问题的过程会涉及动态建立、更新、删除表格和查询等的方法,是难得的学习和练习在VBA中处理表、查询等access对象的应用实例。望天网友在讨论中曾说:“这个问题解决了基本就可以使用平台开发。”本人做此示例,一是自我练习提高,二是希望能给望天网友一点“使用平台开发自己的核算系统”的信心。非常欣赏殷小宝版主的签名“本人将Access当成游戏玩,玩不下去很难受,力争玩到很娴熟”,有了这种精神就好办了。

系统尚未成功,同志仍需努力

不说了,上示例。

点击下载此附件



Access软件网QQ交流群 (群号:483923997)       Access源码网店

常见问答:

技术分类:

相关资源:

专栏作家

关于我们 | 服务条款 | 在线投稿 | 友情链接 | 网站统计 | 网站帮助