问题:
在打印模板中获取子表内容,可从数据库中取数据,而当前项目数据库里面数据按年度录入,但是只需要显示近3年的数据,插件如何实现排序取数据?
1、先直接写一个SQL语句,把近3年排序后的数据读取出来
2、在调用子表接口加载数据
3、示例:
varmonthly = DateTime.Now.Month;
var selectsql =string.Format(@"SELECT
t1.Yearly,
t1.Monthly,
t1.BudgetUnitName,
t1.BudgetUnitCode,
t1.BudgetItemName,
t1.BudgetItemCode,
t1.Budget
FROM XL_YS_BudgetPay t1
WHEREt1.Yearly = {0}
--AND Monthly > {1}
AND t1.BudgetUnitCode = '{2}'
AND BudgetItemCode = '{3}'
ORDER BY Monthly", yearly, monthly, budgetunitcode,budgetitemcode);
var dt =OThinker.H3.WorkSheet.AppUtility.Engine.Query.QueryTable(selectsql);
var list = newList<BizObject>();
var monthlist = newList<string> { "Jan", "Feb", "Mar","Apr", "May", "Jun", "Jul","Aug", "Sep", "Oct", "Nov","December" };
if (dt.Rows.Count > 0)
{
//DeptCostBudgetInfo 为子表名称
BizObjectSchemachildSchema = this.ActionContext.Schema.GetProperty("DeptCostBudgetInfo").ChildSchema;
varbizObject = new BizObject(this.ActionContext.Engine, childSchema,this.ActionContext.User.UserID);
bizObject["DataType"]= "原始";
bizObject["BudgetItemName"]= dt.Rows[0]["BudgetItemName"].ToString();
bizObject["BudgetItemCode"]= dt.Rows[0]["BudgetItemCode"].ToString();
varbizObject2 = new BizObject(this.ActionContext.Engine, childSchema,this.ActionContext.User.UserID);
bizObject2["DataType"]= "修改";
bizObject2["BudgetItemName"]= dt.Rows[0]["BudgetItemName"].ToString();
bizObject2["BudgetItemCode"]= dt.Rows[0]["BudgetItemCode"].ToString();
for(int i = 0; i < monthlist.Count; i++)
{
bizObject[monthlist]= dt.Rows["Budget"].ToString();
bizObject2[monthlist]= dt.Rows["Budget"].ToString();
}
list.Add(bizObject);
list.Add(bizObject2);
}
if (bos != null)
{
if (bos.Length > 1)
{
list.AddRange(bos);
}
}
this.ActionContext.InstanceData["DeptCostBudgetInfo"].Value =list.ToArray();
ActionContext.InstanceData.Submit();