ビジネスシナリオ:顧客は異なるフィルタリング基準に別の列を表示する必要があります。動的な列名を可能にする方法。
システムを使用しました。
System.Collections.Genericを使用しました。
System.Linqのを使用しました。
System.Textのを使用しました。
Kingdee.BOS.Core.Report.PlugInを使用しました。
Kingdee.BOS.Core.Reportを使用しました。
System.Dataを使用しました。
Kingdee.BOS.Contracts.Reportを使用しました。
Kingdee.BOS.App.Dataを使用しました。
Kingdee.BOS.Core.CommonFilterを使用しました。
Kingdee.BOS.Utilを使用しました。
Kingdee.BOSを使用しました。
Kingdee.BOS.Coreを使用しました。
Kingdee.BOS.Core.Listを使用しました。
System.ComponentModelを使用しました。
Kingdee.BOS.Orm.DataEntityを使用しました。
Kingdee.BOS.ServiceHelperを使用しました。
System.IOを使用しました。
エクセル= Microsoft.Office.Interop.Excelを使用して、
するSystem.Reflectionを使用しました。
Kingdee.BOS.Core.DynamicFormを使用しました。
レポートの名前空間
{
[説明( "月刊テーブルの接収数")]
publicクラスレポート:SysReportBaseService
{
公共の新しい新しいデータセットデータセットDS =();
ます。public voidオーバーライドを初期化()
{
base.Initialize();
this.ReportProperty。 = ReportType.REPORTTYPE_NORMAL ReportType;
this.ReportProperty.ReportName =新しい新しいLocaleValue(base.Context.UserLocale.LCID "月次統計の数を接収");
this.ReportProperty.BillKeyFieldName = "DEPT";
}
パブリック文字列GetTableNameオーバーライド()
{
VARのbase.GetTableName結果=();
戻り値の結果;
}
公共オーバーライドボイドBuilderReportSqlAndTempTable(IRptParamsフィルタ、文字列tableNameの)
{
base.BuilderReportSqlAndTempTable(フィルタ、tableNameの)。
//获取过滤条件
DynamicObject customFil = filter.FilterParameter.CustomFilter。
ストリングのStartTime = customFil [ "F_Dev_StartTime"]のToString()。
ストリングSTOPTIME = customFil [ "F_Dev_StopTime"]のToString()。
ストリングseqFld = String.Formatの(base.KSQL_SEQ、 "DEPT")。
KSQL_SEQ = String.Formatの(KSQL_SEQ、 "DEPT ASC")。
ストリングSSQL = @ "EXEC P_ExportToChart '" +のStartTime + " ''" + STOPTIME + "'、 '{0}'、 '{1}'";
文字列sSQLWithNoTempTable = @ "幹部P_ExportToChartWithNoTempTable '" +のStartTime + " ''" + STOPTIME + "'";
DS = DBServiceHelper.ExecuteDataSet(this.Context、sSQLWithNoTempTable)。
SSQL = String.Formatの(SSQL、this.KSQL_SEQ、tableNameの)。
DBUtils.Execute(this.Context、SSQL)。
}
パブリックオーバーライドReportTitlesのGetReportTitles(IRptParamsフィルタ)
{
ReportTitlesタイトル=新しいReportTitles()。
//获取过滤条件
DynamicObject customFil = filter.FilterParameter.CustomFilter。
ストリングのStartTime = customFil [ "F_Dev_StartTime"]のToString()。
文字列STOPTIME = customFil [」
titles.AddTitle( "FSTARTTIME"、のStartTime)。
titles.AddTitle( "FSTOPTIME"、STOPTIME)。
タイトルを返します。
}
/// <要約>
///构建动态列
/// </要約>
/// <PARAM名= "フィルタ"> </ PARAM>
/// <戻る> </戻り>
パブリックオーバーライドReportHeaderのGetReportHeaders( IRptParamsフィルタ)
{
// TODO:fentryid、FID、fbaseunitqty、fmaterialid、fbomid、fqty
ReportHeaderヘッダ=新しいReportHeader()。
//header.AddChild("fwname」、新LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString( "物料"、 "002460030014689"、金蝶。
//header.AddChild("fcustid」、新LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString( "客户"、 "002460030014692"、Kingdee.BOS.Resource.SubSystemType.BOS)、this.Context.UserLocale.LCID) );
//header.AddChild("FQty」、新LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString( "数量"、 "002460030014695"、Kingdee.BOS.Resource.SubSystemType.BOS)、this.Context.UserLocale.LCID) 、SqlStorageType.SqlDecimal)。
//header.AddChild("fprice」、新LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString( "单价"、 "002460030014698"、Kingdee.BOS.Resource.SubSystemType.BOS)、this.Context.UserLocale.LCID) 、SqlStorageType.SqlDecimal)。
//header.AddChild("famount」、新LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString( "金额"、 "002460030014701"、Kingdee.BOS.Resource.SubSystemType.BOS)、this.Context.UserLocale.LCID) 、SqlStorageType.SqlDecimal)。
ヘッダ= this.GetHeaders(DS)。
ヘッダを返します。
}
パブリックReportHeaderのGetHeaders(データセットDS)
{
ReportHeaderヘッダ=新しいReportHeader()。
int型のカウント= ds.Tables [0] .Columns.Count。
(カウント> 0)場合
、{
ため(INT iが= 0; iが<カウント、I ++)
{
header.AddChild(ds.Tables [0] .Columns [I] .ToString()、新LocaleValue(Kingdee.BOS.Resource.ResManager.LoadKDString(ds.Tables [0] .Columns [I] .ToString()、 " 002460030014689" 、Kingdee.BOS.Resource.SubSystemType.BOS)、this.Context.UserLocale.LCID));
}
}
ヘッダを返します。
}
}
}