说明:本例以销售退货质量统计表增加显示检验单上质检方案字段的值为例
1、BOS设计器找到销售退货质量统计表扩展,在表体增加基础资料类型字段,绑定质检方案基础资料,如下图所示:
2、BOS设计器找到销售退货质量统计表过滤扩展,在显示隐藏列的字段集合属性中增加基础资料类型字段,命名为质检方案。如下图所示;
3、二开报表插件继承标准产品插件;
代码如下:
public class ReportTest : SalesReturnQuaStatisticRpt
{
public override void Initialize()
{
base.Initialize();
this.ReportProperty.DspInsteadColumnsInfo.DefaultDspInsteadColumns.Add("FQCSCHEMEID", "FQCSCHEMENAME");
}
public override void BuilderReportSqlAndTempTable(BOS.Core.Report.IRptParams filter, string tableName)
{
base.BuilderReportSqlAndTempTable(filter, tableName);
string sql = string.Format(@"ALTER TABLE {0} ADD FQCSCHEMEID INT NULL,FQCSCHEMENUMBER NVARCHAR(255),FQCSCHEMENAME NVARCHAR(255) ", tableName);
DBUtils.Execute(this.Context, sql);
//给新增的字段赋值,注意到报表系统临时表的主键固定是FIDENTITYID
sql = string.Format(@"
MERGE INTO {0} U1 USING (
SELECT T0.FQCSCHEMEID,T1.FIDENTITYID,T4.FNUMBER AS FQCSCHEMENUMBER ,T5.FNAME AS FQCSCHEMENAME
FROM T_QM_INSPECTBILLENTRY T0
INNER JOIN T_QM_INSPECTBILL T2 ON T2.FID=T0.FID
INNER JOIN {0} T1 ON T1.FINSPECTBILLID = T2.FID AND T1.FINSPECTBILLROWSEQ = T0.FSEQ
INNER JOIN T_QM_QCSCHEME T4 ON T4.FID=T0.FQCSCHEMEID
INNER JOIN T_QM_QCSCHEME_L T5 ON T5.FID=T0.FQCSCHEMEID AND T5.FLOCALEID={1}
) U2 ON U2.FIDENTITYID=U1.FIDENTITYID
WHEN MATCHED THEN UPDATE
SET FQCSCHEMEID=U2.FQCSCHEMEID,FQCSCHEMENUMBER=U2.FQCSCHEMENUMBER,FQCSCHEMENAME=U2.FQCSCHEMENAME
", tableName, this.Context.UserLocale.LCID);
DBUtils.Execute(this.Context, sql);
}
}
4、打开销售退货质量统计表,注册二开的新插件,取消标准产品插件的引用;
5、运行效果如下所示:
注意:代码中质检方案的名称和编码的字段长度可以根据实际修改,代码中给了255为例。
推荐阅读