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

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

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



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



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



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



保存之~~

然后切换到程序中,以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


运行之,效果如下


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

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

posted @ 2008-01-22 21:35  阿泰  阅读(2355)  评论(0编辑  收藏  举报