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;