喜鹊ERP - FastReport.NET报表实施与开发操作指引
一、报表参数一览表
字段/参数名称 | 类型 | 说明 |
pReportHead | 参数 | 报表抬头,优先取客户的报表抬头,如果客户没有设置,就取【公司设置】里面报表抬头。 |
pTel | 参数 | 电话号码,公司联系电话,逻辑同上 |
pFax | 参数 | 传真,公司传真,逻辑同上 |
pAddress | 参数 | 地址,公司联系地址,逻辑同上 |
pUser | 参数 | 当前用户,当前登录用户,或:打印人,制表人 |
pDate | 参数 | 当前电脑的时间 |
HideDocNo | 字段 | 单据号码,当前单据的单号,如SONO、PONO、DONO,统一使用HideDocNo。 注意:该参数适用于自动补空行的报表。 案例:假设 SONO 作为主外键,明细表要有SONO字段关联主表,但是补空行的报表有的客户要显示单号,有的客户不需要显示; 解决方案:报表模版统一绑定 [D.HideDocNo]字段,不需要显示单号的客户该字段赋空值; |
CreatedBy | 字段 | 当前单据的创建人编码 |
CreatedName | 字段 | 当前单据的创建人姓名 |
M | 别名 | 表体、主表的别名,报表组件的数据源设置,如:[M.CustomerCode], [M.SONO] |
D | 别名 | 明细、明细表的别名,报表组件的数据源设置,如:[D.ProductCode], [D.PaperName] |
TotalAmountCHN | 字段 | 人民币大写参数。在存储过程内调用dbo.fun_GetRMB函数生成人民币大写参数,参考:usp_IV_Carton_QueryReportData |
二、报表扩展字段
ERP系统定义了 10个扩展字段 F1 ~ F10,字符类型,用于个性化调整报表格式,比如加字段,加参数。
//存储过程自定义返回参数规则F1~F10参数名(系统最多支持10自定义参数)
public string F1 { get; set; }
public string F2 { get; set; }
public string F3 { get; set; }
public string F4 { get; set; }
public string F5 { get; set; }
public string F6 { get; set; }
public string F7 { get; set; }
public string F8 { get; set; }
public string F9 { get; set; }
public string F10 { get; set; }
使用方法
比如报表要显示客户订单号 CustomerOrderNo :
1、首先检查存储过程是否返回了 CustomerOrderNo 字段,如果有返回,在报表模版加个 Label 组件设置.Text = [M.CustomerOrderNo]
2、使用扩展字段,在存储过程 SELECT 语句增加 CustomerOrderNo 字段,如:SELECT CustomerOrderNo AS F1, 使用 F1 作为别名返回,然后在报表模版加个 Label组件设置.Text = [M.F1]
三、个性化报表注意事项
- 报表模版中定义的字段必须在存储过程返回;
- 自定义参数必须在报表参数一览表中存在;
四、其他
类型 | 参数 |
报表文件格式 | *.frx |
报表模版文件路径 | 应用程序目录\reports\ |
报表组件 | FastReport.NET 2023.1.8 版本 |
报表设计器 | Designer.exe |
五、报表模版文件管理
路径:系统管理\报表管理
查询界面
【上传全部报表】
把当前电脑的报表模版文件全部上传到服务器,其他用户端自动下载最新的报表模版。
编辑界面
在查询界面选择一条记录,点【查看】或【修改】按钮,进入编辑页面:
【选择报表】:选择一个报表模版文件,如:customer.frx文件;
【更新报表】:在选择了报表模版文件的前提下,可以更新报表内容,生成新的版本号,其他用户端会自动下载报表文件;
【报表另存为】:另存为一个新的报表模版文件;
六、单据报表人民币大写
条件:单据报表适用。
1、主表须返回 TotalAmount 总金额字段,若物理表没有这个字段,可使用别名返回,参考: SELECT Amount AS TotalAmount
2、打开报表模板文件,添加人民币大写Lable标签,设置Text属性:[M.TotalAmountCHN]
如《送货单》报表的代码逻辑:
//自动处理人民币大写
if (ds.Tables[0].Columns["TotalAmountCHN"] == null)
{
ReportLib.AddColumn(ds.Tables[0], "TotalAmountCHN", typeof(String));
//设置中文人民币大写金额
foreach (DataRow item in ds.Tables[0].Rows)
{
item["TotalAmountCHN"] = RmbHelper.ToUpper(item["TotalAmount"].ToDecimal());
}
}