数据访问层: public static DataTable getYWLYBB(string rq) {
StringBuilder sb = new StringBuilder(); sb.Append(" Select nvl(RQ,0) rq,nvl(ZJ,0) zj,ywmc,P_YWMC From "); sb.Append(" (Select YWFL ,to_char(slsj,'dd') rq, Count(0) As zj From khbx_jxd_dr"); sb.Append(" Where YWFL Is Not Null And to_char(slsj,'dd') Is Not Null"); sb.Append(" Group By YWFL,to_char(slsj,'dd') ) a,dbgl_ywfl b"); sb.Append(" Where a.YWFL(+)=b.ywmc And P_YWMC Is Not Null "); return DataBaseManage.ExecuteDataSet(sb.ToString()).Tables[0]; }业务逻辑层: DataTable dt = khbx_jxd_drywlDao.getYWLYBB(rq);
int Days = DateTime.DaysInMonth(Convert.ToInt32(rq.Substring(0, 4)), Convert.ToInt32(rq.Substring(4, 2))); List<string> list = dt.AsEnumerable().OrderBy(x => x["p_ywmc"]).Select(x => x["ywmc"].ToString()).Distinct().ToList(); var d = (from a in (from i in Enumerable.Range(1, Days) from j in list select new { rq = i, ywmc = j, zj = 0 }) join b in dt.AsEnumerable() on new { rq = a.rq, ywmc = a.ywmc } equals new { rq = Convert.ToInt32(b["rq"]), ywmc = b["ywmc"].ToString() } into temp from b in temp.DefaultIfEmpty() select new { a.rq, a.ywmc, zj = null == b ? 0 : Convert.ToInt32(b["zj"]) } ).ToList(); DataTable result = ConvertToDataTable(d); return result; // return khbx_jxd_drywlDao.getYWLYBB(rq); } private static DataTable ConvertToDataTable<T>(IEnumerable<T> data) { var dt = new System.Data.DataTable(); var ps =typeof(T).GetProperties().ToList(); ps.ForEach(p => dt.Columns.Add(p.Name, p.PropertyType)); foreach(T t in data) { var dr = dt.NewRow(); var vs = from p in ps select p.GetValue(t, null); var ls = vs.ToList(); int i = 0; ls.ForEach(c => dr[i++] = c); dt.Rows.Add(dr); } return dt; } 报表页面: if (!IsPostBack) { BindReport(); }
public static DataTable getYWLYBB(string rq)
{
StringBuilder sb = new StringBuilder();
sb.Append(" Select nvl(RQ,0) rq,nvl(ZJ,0) zj,ywmc,P_YWMC From ");
sb.Append(" (Select YWFL ,to_char(slsj,'dd') rq, Count(0) As zj From khbx_jxd_dr");
sb.Append(" Where YWFL Is Not Null And to_char(slsj,'dd') Is Not Null");
sb.Append(" Group By YWFL,to_char(slsj,'dd') ) a,dbgl_ywfl b");
sb.Append(" Where a.YWFL(+)=b.ywmc And P_YWMC Is Not Null ");
return DataBaseManage.ExecuteDataSet(sb.ToString()).Tables[0];
}业务逻辑层:
DataTable dt = khbx_jxd_drywlDao.getYWLYBB(rq);
int Days = DateTime.DaysInMonth(Convert.ToInt32(rq.Substring(0, 4)), Convert.ToInt32(rq.Substring(4, 2)));
List<string> list = dt.AsEnumerable().OrderBy(x => x["p_ywmc"]).Select(x => x["ywmc"].ToString()).Distinct().ToList();
var d =
(from a in
(from i in Enumerable.Range(1, Days)
from j in list
select new
{
rq = i,
ywmc = j,
zj = 0
})
join b in dt.AsEnumerable() on new { rq = a.rq, ywmc = a.ywmc } equals new { rq = Convert.ToInt32(b["rq"]), ywmc = b["ywmc"].ToString() }
into temp
from b in temp.DefaultIfEmpty()
select new
{
a.rq,
a.ywmc,
zj = null == b ? 0 : Convert.ToInt32(b["zj"])
}
).ToList();
DataTable result = ConvertToDataTable(d);
return result;
// return khbx_jxd_drywlDao.getYWLYBB(rq);
} private static DataTable ConvertToDataTable<T>(IEnumerable<T> data)
{
var dt = new System.Data.DataTable();
var ps =typeof(T).GetProperties().ToList();
ps.ForEach(p => dt.Columns.Add(p.Name, p.PropertyType)); foreach(T t in data)
{
var dr = dt.NewRow();
var vs = from p in ps select p.GetValue(t, null);
var ls = vs.ToList();
int i = 0;
ls.ForEach(c => dr[i++] = c);
dt.Rows.Add(dr);
}
return dt;
} 报表页面: if (!IsPostBack)
{
BindReport();
}
}
/// <summary>
/// 绑定报表
/// </summary>
private void BindReport()
{
ReportViewer1.Visible = true;
DataTable dt = khbx_jxd_drBiz.getYWLYBB("201005");
ReportDataSource rds = null; if (dt != null && dt.Rows.Count > 0)
{
rds = new ReportDataSource("YWL_V_KHBX_JXD_DR", dt); }
else
{
rds = new ReportDataSource("", dt);
}
ReportViewer1.LocalReport.DataSources.Clear();
ReportViewer1.LocalReport.DataSources.Add(rds);
ReportViewer1.LocalReport.Refresh();各位看看有什么问题吗