高级报表
懒人有懒计——浅谈自动报表
2017-05-25 16:40:17

    有人说,懒人比较懂得享受生活,对此我深以为然。在我看来,世界上不少发明估计都是懒人整出来的。正所谓“懒人有懒计”,于是讨厌洗衣服的懒人,就发明了洗衣机;不想擦皮鞋,便有了擦鞋机;冬天懒得烧炕,暖气片从此应运而生……       说这些,是因为今天看到了新手浩天关于《如何基于一个可选字段数目的查询创建报表》的求助,里面是罗斯文数据库示例。大体看了下,主要原理是通过克隆记录集,再设置选择查询的SQL语句,从而更新查询。留意到里面有Docmd.OpenQuery语句,所以如果打开查询后再创建报表,是很简单的,只需要在单击事件中再加上这五句(大家可以试试):

On Error Resume Next

DoCmd.DeleteObject acReport, "数据表视图"

DoCmd.RunCommand acCmdNewObjectAutoReport

DoCmd.Save acReport, "数据表视图"

DoCmd.Close acQuery, "数据表视图"

            ——不知道大家有没有这样的经历:刚学做报表时,喜欢点选数据源,然后点击插入\报表,生成一个报表后再进行处理。 其实,这几句正是基于这个原理。当然,如果做成两个按钮,分别打开查询和报表,那么则相对麻烦些许,于是我便把更新查询过程剥离出来,改造成子过程调用。       尽管懒人有懒计,还是不太希望大家这么“懒”,毕竟机械化或者程序化的东西,始终没有亲力亲为来得人性化。正如一些污渍洗衣机未必洗得干净一样,自动报表的缺陷在于字段过多时,控件宽度或者页面设置等等都存在问题。当然,花点时间,写上一个自适应宽度的函数过程,也不是不可以解决的。不过这些都是后话了。