CSFrameworkV6旗舰版 | 送货单报表C#源码参考|C/S开发框架

Report - 报表代码(送货单)
报表打印窗体 - 送货单



报表打印窗体代码
C# 全选
using CartonERP.Business;
using CartonERP.Library.CommonClass;
using CartonERP.Models;
using CSFrameworkV6.Core.Extensions;
using FastReport;
using FastReport.Data;
using System.Data;
using System.IO;
namespace CartonERP.ReportModule.FastReportForms
{
/// <summary>
/// 送货单报表
/// </summary>
public partial class frmReportDO_Carton : frmBasePrint
{
const string REPORT_DOC_TYPE = "DO_Carton";
/// <summary>
/// 构造器
/// </summary>
public frmReportDO_Carton()
{
InitializeComponent();
_BLLReports = new bllReports();//初始化
DataBinderTools.BoundReport(txtReportTpye.Properties, REPORT_DOC_TYPE);
txtReportTpye.EditValue = (txtReportTpye.Properties.DataSource as List<sys_Reports>).FirstOrDefault().ReportFileName;
}
/// <summary>
/// 打开报表窗体
/// </summary>
/// <param name="DONO"></param>
/// <param name="preview"></param>
public static void Execute(string DONO, bool preview = true)
{
frmReportDO_Carton form = new frmReportDO_Carton();
form.txtNoFrom.Text = DONO;
if (preview)
{
Report rpt = form.InitializeReport();
rpt.PrintSettings.ShowDialog = false;
rpt.Show();
}
else
{
form.ShowDialog();
}
}
/// <summary>
/// 打印机设置
/// </summary>
protected override void DoPrinterSetup()
{
var data = JsonFilePrinterSetup.Current.Get(REPORT_DOC_TYPE);
if (frmBasePrinterSetup.Execute(ref data))
{
JsonFilePrinterSetup.Current.Write(REPORT_DOC_TYPE, data);//保存配置
}
}
/// <summary>
/// 打印报表
/// </summary>
protected override void DoPrint()
{
//报表同步:如果数据库报表的版本>本地文件的修改时间,下载到本地替换报表模版文件
ReportLib.SyncReportFile(REPORT_DOC_TYPE, txtReportTpye.EditValue.ToStringEx());
Report rptDO_CartonTable = this.InitializeReport();
rptDO_CartonTable.Prepare();
rptDO_CartonTable.PrintPrepared();
}
/// <summary>
/// 打印预览
/// </summary>
protected override void DoPreview()
{
//报表同步:如果数据库报表的版本>本地文件的修改时间,下载到本地替换报表模版文件
ReportLib.SyncReportFile(REPORT_DOC_TYPE, txtReportTpye.EditValue.ToStringEx());
Report rptDO_CartonTable = this.InitializeReport();
rptDO_CartonTable.Show(true, this);
}
/// <summary>
/// 设计报表模板
/// </summary>
protected override void DoDesignReport()
{
//string file = this.SetReportUrl(txtReportTpye.EditValue.ToStringEx());
//Report rptDO_Carton = new Report();
//rptDO_Carton.Load(file);//加载报表模板文件
//rptDO_Carton.Design(this);
}
/// <summary>
/// 获取报表文件路径
/// </summary>
/// <param name="fileName"></param>
/// <returns></returns>
private string GetReportFilePath(string fileName)
{
return Path.Combine(Application.StartupPath, @"Reports\" + fileName);
}
/// <summary>
/// 初始化报表
/// </summary>
/// <param name="docNo">送货单号</param>
/// <returns></returns>
private Report InitializeReport(string docNo = "")
{
#region 方法1:加载本地报表文件写法
string rptFileName = txtReportTpye.EditValue.ToStringEx();//如:rptPO_Paper01.frx
string file = this.GetReportFilePath(rptFileName);//文件路径
Report rptDO_Carton = new Report();
rptDO_Carton.Load(file);//加载报表模板文件
#endregion
var valList = txtNoFrom.EditValue.ToStringEx().Split(',', StringSplitOptions.RemoveEmptyEntries).ToList();
QueryBusiness P = new QueryBusiness
{
DocNoFrom = docNo == null ? txtNoFrom.Text : docNo,
ListDocNo = valList,
};
//取报表数据
var ds = new bll_DO_Carton().QueryReportData(P);
ReportLib.ApplyUserName(ds);//自动添加制单人姓名
ReportLib.ApplyEmptyRows(ds, 0, REPORT_DOC_TYPE, "DONO", rptFileName, false);//自动补空行
//人民币大写
if (ds.Tables[0].Columns["TotalAmountCHN"] == null)
{
ReportLib.AddColumn(ds.Tables[0], "TotalAmountCHN", typeof(String));
//设置金额中文、制单人中文名称(model方式)
foreach (DataRow item in ds.Tables[0].Rows)
{
item["TotalAmountCHN"] = RmbHelper.ToUpper(item["TotalAmount"].ToDecimal());
}
}
//获取客户编码用于设置报表抬头
var CustomerCode = ds.Tables[0].Rows.Count > 0 ? ds.Tables[0].Rows[0]["CustomerCode"].ToStringEx() : "";
//取报表名称
var fileName = txtReportTpye.EditValue.ToStringEx();
var obj = txtReportTpye.Properties.GetDataSourceRowByKeyValue(fileName) as sys_Reports;
//明细表相关字段设置空值
foreach (DataRow item in ds.Tables[1].Rows)
{
if (obj.SortId == 2)//无单价&金额&备注
{
item["Price"] = 0;
item["Amount"] = 0;
}
if (obj.ReportFileName == fileName && obj.SortId == 4)//品名&无单价&金额&重量
{
item["Price"] = 0;
item["Amount"] = 0;
}
if (obj.ReportFileName == fileName && obj.SortId == 5)//无品名单价金额
{
item["ProductName"] = DBNull.Value;
}
if (obj.ReportFileName == fileName && obj.SortId == 6)//无品名无单价金额
{
item["ProductName"] = DBNull.Value;
item["Price"] = 0;
item["Amount"] = 0;
}
if (obj.ReportFileName == fileName && obj.SortId == 7)//无单价金额单重重量
{
item["Price"] = 0;
item["Amount"] = 0;
}
if (obj.ReportFileName == fileName && obj.SortId == 8)//无品名有单价金额单重重量
{
item["ProductName"] = DBNull.Value;
}
}
rptDO_Carton.Tag = ds; //缓存报表数据,(放到FastReport.Report.Tag 对象)
ds.Tables[0].TableName = "M";//换个短的别名
ds.Tables[1].TableName = "D";//换个短的别名
rptDO_Carton.RegisterData(ds.Tables[0], "M"); //注册数据源,主表
rptDO_Carton.RegisterData(ds.Tables[1], "D"); //注册数据源,从表
(rptDO_Carton.GetDataSource("M") as TableDataSource).Enabled = true;
(rptDO_Carton.GetDataSource("D") as TableDataSource).Enabled = true;
//给DataBand(主表数据)绑定数据源
DataBand masterBand = rptDO_Carton.FindObject("Data1") as DataBand;
masterBand.DataSource = rptDO_Carton.GetDataSource("M"); //主表
//给DataBand(明细数据)绑定数据源
DataBand detailBand = rptDO_Carton.FindObject("Data2") as DataBand;
detailBand.DataSource = rptDO_Carton.GetDataSource("D"); //明细表
//重要!!给明细表设置主外键关系!
detailBand.Relation = new Relation();
detailBand.Relation.ParentColumns = new string[] { "DONO" };
detailBand.Relation.ParentDataSource = rptDO_Carton.GetDataSource("M"); //主表
detailBand.Relation.ChildColumns = new string[] { "DONO" };
detailBand.Relation.ChildDataSource = rptDO_Carton.GetDataSource("D"); //明细表
//设置客户报表抬头
ReportLib.SetCustomerReportTitle(rptDO_Carton, CustomerCode);
//设置单价、金额显示格式
ReportLib.SetCustomerPriceAmountPoint(rptDO_Carton, CustomerCode, "[D.Price]", "[D.Amount]");
//应用打印机配置
ReportLib.ApplyPrinterSettings(rptDO_Carton, JsonFilePrinterSetup.Current.Get(REPORT_DOC_TYPE));
QueryBusiness p = new QueryBusiness { ListDocNo = valList };
//更新打印次数
var result = new bll_DO_Carton().UpdatePrintTimes(p);
return rptDO_Carton;
}
}
}
参考文档:
CSFrameworkV6旗舰版源码展示(C#,LINQ+EF)|C/S开发框架
CSFrameworkV6旗舰版|成功案例|纸箱行业ERP系统|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CSFrameworkV6旗舰版|新功能|在线用户查询、设置用户下线|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CSFrameworkV6旗舰版|新建业务模块 (VS Project项目)|C/S开发框架
CSFrameworkV6旗舰版 | 多语言及国际化|C/S开发框架
CSFrameworkV6旗舰版 | Oracle数据库笔记|C/S开发框架
CSFrameworkV6旗舰版:获取主菜单、模块菜单、用户有权限的菜单|C/S开发框架
CSFrameworkV6旗舰版 | MySql数据库笔记|C/S开发框架
CSFrameworkV6旗舰版|新增功能|打开模块默认窗体|C/S开发框架
C/S快速开发框架旗舰版CSFrameworkV6.0 | VS开发环境配置|C/S开发框架
CSFrameworkV6旗舰版 | 国际化 | 导入导出多语言资料|C/S开发框架
CSFrameworkV6旗舰版 | AutoUpgrader自动升级程序支持3种数据库|C/S开发框架
CSFrameworkV6旗舰版 | 迭代开发 | 当前导航菜单、模块按钮与活动窗体同步|C/S开发框架
CSFrameworkV6旗舰版新增功能菜单权限设置|C/S开发框架
CSFrameworkV6旗舰版源码展示(C#,LINQ+EF)|C/S开发框架
CSFrameworkV6旗舰版|成功案例|纸箱行业ERP系统|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CSFrameworkV6旗舰版|新功能|在线用户查询、设置用户下线|C/S开发框架
CSFrameworkV6旗舰版开发框架 | 集成软件授权认证系统|C/S开发框架
CSFrameworkV6旗舰版|新建业务模块 (VS Project项目)|C/S开发框架
CSFrameworkV6旗舰版 | 多语言及国际化|C/S开发框架
CSFrameworkV6旗舰版 | Oracle数据库笔记|C/S开发框架
CSFrameworkV6旗舰版:获取主菜单、模块菜单、用户有权限的菜单|C/S开发框架
CSFrameworkV6旗舰版 | MySql数据库笔记|C/S开发框架
CSFrameworkV6旗舰版|新增功能|打开模块默认窗体|C/S开发框架
C/S快速开发框架旗舰版CSFrameworkV6.0 | VS开发环境配置|C/S开发框架
CSFrameworkV6旗舰版 | 国际化 | 导入导出多语言资料|C/S开发框架
CSFrameworkV6旗舰版 | AutoUpgrader自动升级程序支持3种数据库|C/S开发框架
CSFrameworkV6旗舰版 | 迭代开发 | 当前导航菜单、模块按钮与活动窗体同步|C/S开发框架
CSFrameworkV6旗舰版新增功能菜单权限设置|C/S开发框架
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 |
在线客服
