用公式实现动态设置图表的轴数据项

本文适用于单表中有多类统计项目的情况,同时也适用制作程序的公用模块。
本文仅使用了程序与水晶报表的公式参数传递,而未使用动态创建功能

传统的图表制作中,我们都是先选择要进行图表显示的字段,在这里,我们的思路是以公式代替实际字段代替报表
用不同的字段填充公式,从而达到动态设置的目的

用公式实现动态设置图表的轴数据项_第1张图片

在这里要说明一下,纵轴上的汇总字段x2,如果要汇总的话,请将该公式默认为0

用公式实现动态设置图表的轴数据项_第2张图片

此时的报表呈现如下,为了显示的美观,我们把各默认标题置为空,用另外的3个公式来实现这几个项目

用公式实现动态设置图表的轴数据项_第3张图片

将x轴标题和报表标题公式拉到与图表同宽,字体设置未居中
将y轴标题公式纵向拉到与图表同高,字体居中,宽度拉到一个字宽,且设置属性为 可扩大

用公式实现动态设置图表的轴数据项_第4张图片

保存之~~

然后切换到程序中,以VB6为例
Option   Explicit
Private  crApp  As   New  CRAXDRT.Application
Private  crReport  As  CRAXDRT.Report
Private   Sub  Form_Load()
    
Set  crReport  =  crApp.OpenReport(App.Path  &   " \report1.rpt " )
    
    
'   注意参数的顺序(是按照你新建的顺序的,与显示顺序可能不一致),如果你拿不准,弹出来看看
     '
     ' MsgBox crReport.FormulaFields(1).Name
     ' MsgBox crReport.FormulaFields(2).Name
     ' MsgBox crReport.FormulaFields(3).Name
     ' MsgBox crReport.FormulaFields(4).Name
     ' MsgBox crReport.FormulaFields(5).Name
    
    
'  动态指定两个轴的字段(表名.字段)
    crReport.FormulaFields( 1 ).Text  =   " {产品.产品类别} "
    crReport.FormulaFields(
2 ).Text  =   " {产品.产品 ID} "
    
    
' 设置轴描述,题头,注意!传入的值必须以双引号包起来
    crReport.FormulaFields( 3 ).Text  =   " ""我的横轴啊横轴"" "
    crReport.FormulaFields(
4 ).Text  =   " ""我的纵轴啊纵轴"" "
    crReport.FormulaFields(
5 ).Text  =   " ""标题啊标题"" "
    

    CRViewer91.ReportSource 
=  crReport
    CRViewer91.ViewReport

End Sub


运行之,效果如下
用公式实现动态设置图表的轴数据项_第5张图片

特别说明:
crReport.FormulaFields(3).Text = """我的横轴啊横轴"""
    crReport.FormulaFields(4).Text = """我的纵轴啊纵轴"""
    crReport.FormulaFields(5).Text = """标题啊标题"""
注意!传入报表的公式应为 "我的横轴啊横轴" ,而不是 我的横轴啊横轴

报表制作视频可在此处下载:http://files.cnblogs.com/babyt/CR20080122Dychart.rar

你可能感兴趣的:(数据)