先看看打印入库单的效果图,看如下:
客户要求合计一行,要求大写中文数字。XtraReport报表是如何做出以上图的效果呢?因为是要把数字转成大写中文数字,得先准备数字转大写中文数字的函数。因网上有很多方法,我这里就不上传代码了。这里只说一下XtraReport报表创建以上收货单报表大写数字操作。新建一个XtraReport报表,设置好收货单报表格式。使用的是运行时绑定数据,以下是源码:
1 public EnterStockRpt(DataSet ds) 2 { 3 InitializeComponent(); 4 //绑定主表 5 DataSource = ds; 6 DataMember = "parent"; 7 xlSupplierName.DataBindings.Add("Text", ds, "SupplierName"); 8 xlEnterStockID.DataBindings.Add("Text", ds, "EnterStockID"); 9 xlEnterDate.DataBindings.Add("Text", ds, "EnterDate","{0:D}"); 10 //绑定从表 11 DetailReport.DataSource = ds; 12 DetailReport.DataMember = "R1"; 13 xtProductID.DataBindings.Add("Text", ds, "R1.ProductID"); 14 xtProductName.DataBindings.Add("Text", ds, "R1.ProductName"); 15 xtProductUnit.DataBindings.Add("Text", ds, "R1.ProductUnit"); 16 xtQuantity.DataBindings.Add("Text", ds, "R1.Quantity"); 17 xtPrice.DataBindings.Add("Text", ds, "R1.Price"); 18 xtAmountMoney.DataBindings.Add("Text", ds, "R1.AmountMoney"); 19 //合计 20 xrTableCellGroupSumAccount.DataBindings.Add("Text", ds, "R1.AmountMoney"); 21 xrTableCellGroupSumAccount.Summary = new XRSummary(SummaryRunning.Report, SummaryFunc.Sum, string.Empty); 22 //数字转中文大写数字 23 xrTableCellGroupSumAccountChina.DataBindings.Add("Text", ds, "EnterStockMoneys"); 24 totalMoney = Convert.ToDecimal(GetCurrentColumnValue("EnterStockMoneys")); 25 }
假如大写后面的表格名称是:xrTableCellGroupSumAccountChina。添加SummaryGetResult的事件。以下是源码:
private void xrTableCellGroupSumAccountChina_SummaryGetResult(object sender, SummaryGetResultEventArgs e) { //这里的全局函数Turn_MoneyToBig(),用作将金额变成中文大写 e.Result = CmycurD(totalMoney); //e.Handled=true;这一行必须 e.Handled = true; }
做完以上操作,如果你现在就测试预览。数字一定不会转成大写数字。原因很简单,xrTableCellGroupSumAccountChina的属性Summary一定要修改一下。如下图: