天天看点

[Crystal Report]使用技巧

1.如何制作页小计?

在DataTable中添加数值型字段pageno,代码中遍历记录赋值该字段,从1开始记数满10条自动还原为1。然后在水晶报表中使用该字段pageno分组,右键组页眉在菜单中选择“格式化节...”并钩选“在后面页新建页”,接着添加“运行总和字段”将需要小计的字段放在页脚即可。

在DataTable中添加数值型字段pageno,代码中遍历记录赋值该字段,从1开始记数满10条自动还原为1。然后在水晶报表中使用该字段pageno分组,右键组页眉在菜单中选择“格式化节...”并钩选“在后面页新建页”,接着添加“运行总和字段”将需要小计的字段放在页脚即可。

2.一页不够显示,如何添加空白记录?

在DataTable中添加,利用pageno统计每页记录是否达到10条。

3.如何将页小计转换成大写金额?

添加公式字段,右键“编辑”,在公式编辑器中更改语法为BASIC,并添加如下代码:

    dim LowerMoney  as Currency

    LowerMoney= Round ({#Total_psje}, 2)

    Dim strLower As String, strUPart As String, strUpper As String

    Dim iTemp      As Number

    strLower = cStr(LowerMoney)         '保留到两位小数

    strLower = Replace (strLower, "¥", "")

    strLower = Replace (strLower, ",", "")

    iTemp = 1

    strUpper = ""

    Do While (iTemp <= Len(strLower))

        Select Case Mid(strLower, Len(strLower) - iTemp + 1, 1)

            Case "."

                strUPart = "元"

            Case "0"

                strUPart = "零"

            Case "1"

                strUPart = "壹"

            Case "2"

                strUPart = "贰"

            Case "3"

                strUPart = "叁"

            Case "4"

                strUPart = "肆"

            Case "5"

                strUPart = "伍"

            Case "6"

                strUPart = "陆"

            Case "7"

                strUPart = "柒"

            Case "8"

                strUPart = "捌"

            Case "9"

                strUPart = "玖"

        End Select

        Select Case iTemp

            Case 1

                strUPart = strUPart & "分"

            Case 2

                strUPart = strUPart & "角"

            Case 3

                strUPart = strUPart & ""

            Case 4

                strUPart = strUPart & ""

            Case 5

                strUPart = strUPart & "拾"

            Case 6

                strUPart = strUPart & "佰"

            Case 7

                strUPart = strUPart & "仟"

            Case 8

                strUPart = strUPart & "万"

            Case 9

                strUPart = strUPart & "拾"

            Case 10

                strUPart = strUPart & "佰"

            Case 11

                strUPart = strUPart & "仟"

            Case 12

                strUPart = strUPart & "亿"

            Case 13

                strUPart = strUPart & "拾"

            Case 14

                strUPart = strUPart & "佰"

            Case 15

                strUPart = strUPart & "仟"

            Case 16

                strUPart = strUPart & "万"

            Case Else

                strUPart = strUPart & ""

        End Select

        strUpper = strUPart & strUpper

        iTemp = iTemp + 1

    Loop

    strUpper = Replace(strUpper, "零拾", "零")

    strUpper = Replace(strUpper, "零佰", "零")

    strUpper = Replace(strUpper, "零仟", "零")

    strUpper = Replace(strUpper, "零零零", "零")

    strUpper = Replace(strUpper, "零零", "零")

    strUpper = Replace(strUpper, "零角零分", "整")

    strUpper = Replace(strUpper, "零分", "整")

    strUpper = Replace(strUpper, "零角", "零")

    strUpper = Replace(strUpper, "零亿零万零元", "亿元")

    strUpper = Replace(strUpper, "亿零万零元", "亿元")

    strUpper = Replace(strUpper, "零亿零万", "亿")

    strUpper = Replace(strUpper, "零万零元", "万元")

    strUpper = Replace(strUpper, "万零元", "万元")

    strUpper = Replace(strUpper, "零亿", "亿")

    strUpper = Replace(strUpper, "零万", "万")

    strUpper = Replace(strUpper, "零元", "元")

    strUpper = Replace(strUpper, "零零", "零")

    '对壹元以下的金额的处理

    If (Mid(strUpper, 1, 1) = "元") Then strUpper = Mid(strUpper, 2, (Len(strUpper) - 1))

    If (Mid(strUpper, 1, 1) = "零") Then strUpper = Mid(strUpper, 2, (Len(strUpper) - 1))

    If (Mid(strUpper, 1, 1) = "角") Then strUpper = Mid(strUpper, 2, (Len(strUpper) - 1))

    If (Mid(strUpper, 1, 1) = "分") Then strUpper = Mid(strUpper, 2, (Len(strUpper) - 1))

    If (Mid(strUpper, 1, 1) = "整") Then strUpper = "零元整"

    Formula = strUpper

4.如何代码更改报表中的某个text值?

using CrystalDecisions.CrystalReports.Engine;

using CrystalDecisions.CrystalReports.Engine;

public void _SetReportTextObjectValue(string TextObjectCtrlName, string Value)

   {

    ReportDocument rd=(ReportDocument)this.crystalReportViewer1.ReportSource;

    TextObject o=(TextObject)rd.ReportDefinition.ReportObjects[TextObjectCtrlName];

    o.Text=Value;

   }

5.更新显示报表?

     using CrystalDecisions.CrystalReports.Engine;

     ReportDocument rpt = new ReportDocument(); 

     rpt.Load(报表文件路径);

     rpt.SetDataSource(DataSet对象);

     this.crystalReportViewer1.ReportSource = rpt;