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

[access报表]access报表画线实例(一)统一控件格式

时 间:2008-12-01 13:04:24
作 者:芊芊   ID:54  城市:东营
摘 要:ACCESS报表画线实例

正 文:

 
       在使用ACCESS报表时,表格线成为令人头疼的问题,手工画线费时费力,对不齐且画不直;使用文本框和标签的边框样式,由于调整的原因文本框和标签的高度和宽度及上边距不同,所画出的线条也不直不齐;手工统一设置文本框和标签的长宽高,左边距、上边距,有过于繁琐。这些问题用VBA可以为我们解决。
       首先要在报表视图中将所有的可见控件排列整齐,然后在报表模块中写入画线代码。
一、将所用的控件排列整齐
1、 使用报表向导创建报表
点击下一步,
 
如果在此选择分组,报表界面有些乱,后面再加入好些,点击下一步,
选择需要排序的字段,点击下一步,
布局选择“表格”,点击下一步,
所用样式选择“正式”较符合习惯,点击下一步,
点击,“完成”,报表创建完成。局部图片如下:
点击“视图”按钮,进入报表设计窗口,
根据需要做相关调整,例如页面页眉的文本框想宽些,那么只需要调整“订单ID”标签的高度,其他的不用管它,VBA将自动调整到与“订单ID”标签的高度一致。同理,主体只需调整“订单ID”文本框的高度即可。
       再就是把页面页眉中的那条黑线去掉吧。为了明了去掉网格。
       主体中的“运输费”、“货主名称”“货主地址”文本框,有些宽,无需调整左间隙只把它调整到适当的宽度即可。页面页眉中的“运输费”、“货主名称”“货主地址”标签可不用管他,VBA将自动调整到与主体的相关控件的宽度一致,并统一设置控件的左右间隙。同理“货主城市”“货主地区”“货主邮政编码”“货主国家”调整适当宽度即可。
       在模块中,新建一模块,例如“统一报表画线控件格式”,
进入模块设计窗口,将下列代码粘贴进去,
 
 
'=========================================
'过程名:sameformat
'作用为报表画线,统一各控件的宽度.高度.和间隙
'1.取主体和页面页眉第一个控件的高度height为标准,设置其他控件的高度.
'2.以主体的每一个控件的宽度width为标准,设置页面页眉相对应控件的宽度
'3.连接主体和页面页眉的控件,使其隙一致.
'==========================================
 
Sub SameFormat()
    Dim a As Control
    Dim b As Control
    Dim zname As String
    Dim yname As String
    Dim zleft As Single
    Dim zwidth As Single
    Dim zheight As Single
    Dim yheight As Single
    Dim MyRepName As String
     
    '设定要统一格式的报表名称
    '===========================
  
Dim MyRep As Report
'此处报表的名称,打开进入设计状态(修改为自己的报表名称)
     DoCmd.OpenReport "订单", acViewDesign
    '此处报表的对象名称Report_*****
    Set MyRep = Screen.ActiveReport
    MyRepName = MyRep.Name   
    '=============================
   
    '取主体和页面页眉第一各控件的height
    For Each a In MyRep.主体.Controls
        zheight = a.Height
        tt = a.Top
        Exit For
    Next
    For Each a In MyRep.页面页眉.Controls
        yheight = a.Height
        Exit For
    Next
 
    '设主体各Textbox之间的间隙一致
    zleft = 0
    For Each a In MyRep.主体.Controls
        a.Left = zleft
        a.Height = zheight
        '画线标志
a.Tag = "lr"
        '统一上边距
a.Top = 58
        zleft = a.Left + a.Width
    Next
 
    '设置页面页眉的Label与主体各Textbox的宽度一致
    For Each a In MyRep.主体.Controls
        zname = a.Name
        zwidth = a.Width
        zleft = a.Left
        For Each b In MyRep.页面页眉.Controls
            yname = b.Name
            ywidth = b.Width
            If Left(b.Name, Len(b.Name) - 6) = zname Then
                b.Left = zleft
                b.Width = zwidth
                b.TextAlign = 2
                b.Height = yheight
                b.Tag = "lr"
                b.Top = 58
            End If
        Next
    Next
 
    MyRep.主体.Height = zheight
    MyRep.页面页眉.Height = yheight
    '设置完成保存一下
    DoCmd.Close acReport, MyRepName, acSaveYes
    '再打开看看是否成功
    DoCmd.OpenReport MyRepName, acViewDesign
End Sub
运行后,效果图如下:
已经左右间隙统一,上下对齐,高度也一致了。
以上代码稍加修改,也可加入到报表OPEN事件中,完成此项工作。但对报表的生成速度有影响,调整设置也不频繁,设置后很少再调整,模块过程单独使用较好。
页面页眉的标签、主体节文本框中的文字,垂直居中可选中所用标签,在属性中设置:
 

剩下就是画线了,请看ACCESS报表画线实例()VBA画线。
点击下载此附件
 
 


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

常见问答:

技术分类:

相关资源:

专栏作家

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