读书人

想疯了(一个报表显示有关问题)

发布时间: 2012-01-14 20:02:35 作者: rapoo

想疯了(一个报表显示问题)在线等
crtDay oRpt = new crtDay();

string strSql = "select s.Code,s.Name,o.OnDutyDay,o.UpPassTime,(select datename(weekday, ' "+sDate+ " ') )as WeekDate,o.OffPassTime,o.LateDuty,o.EarlyDuty,o.Abnormity,o.OT from tblStaff as s,tblOnDutyNote as o where s.Code=o.StaffID and o.OnDutyDay= ' " + sDate + " ' ";
DataSet ds = null;
string ErrMessage = " ";
if (DBAccess.ExecSql(strSql, ref ds, ref ErrMessage) == 0)
{
//oRpt.Load(Application.StartupPath + " crtDay1.rpt ");
if (ds.Tables[0].Rows.Count > 0)
{
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
string weekDate = null;
weekDate = ds.Tables[0].Rows[i][ "WeekDate "].ToString();
//string[] arry = new string[7] { "Moday ", "Tuesday ", "Wednesday ", "Thursday ", "Friday ", "Saturday ", "Sunday "};
switch (weekDate)
{
case "Moday ":
weekDate = "星期一 ";


break;
case "Tuesday ":
weekDate = "星期二 ";
break;
case "Wednesday ":
weekDate = "星期三 ";
break;
case "Thursday ":
weekDate = "星期四 ";
break;
case "Friday ":
weekDate = "星期五 ";
break;
case "Saturday ":
weekDate = "星期六 ";


break;
case "Sunday ":
weekDate = "星期天 ";
break;
default:
weekDate = ds.Tables[0].Rows[i][ "WeekDate "].ToString();
break;
}
int Abnormity=0;
string abnormity = null;
switch(Abnormity)
{
case 0:
abnormity = "正常 ";
break;
case 1:


abnormity = "迟到 ";
break;
case 2:
abnormity = "早退 ";
break;
default:
abnormity = "正常 ";
break;
}
string OnDutyDay = Convert.ToDateTime(ds.Tables[0].Rows[i][ "OnDutyDay "]).ToShortDateString();
//DateTime UpPassTime = Convert.ToDateTime(ds.Tables[0].Rows[i][ "UpPassTime "]).ToLongTimeString();
//DateTime OffPassTime = Convert.ToDateTime(ds.Tables[0].Rows[i][ "OffPassTime "]).ToLongTimeString();
oRpt.ParameterFields[ "职工工号 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "Code "].ToString());
oRpt.ParameterFields[ "职工姓名 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "Name "].ToString());
oRpt.ParameterFields[ "日期 "].CurrentValues.AddValue(OnDutyDay.ToString());


oRpt.ParameterFields[ "星期 "].CurrentValues.AddValue(weekDate);
oRpt.ParameterFields[ "进时间 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "UpPassTime "].ToString());
oRpt.ParameterFields[ "出时间 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "OffPassTime "].ToString());
oRpt.ParameterFields[ "迟到时间 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "LateDuty "].ToString());
oRpt.ParameterFields[ "早退时间 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "EarlyDuty "].ToString());
oRpt.ParameterFields[ "状态 "].CurrentValues.AddValue(abnormity);
oRpt.ParameterFields[ "加班 "].CurrentValues.AddValue(ds.Tables[0].Rows[i][ "OT "].ToString());
//oRpt.SetDataSource(ds);

}
this.crystalReportViewer1.ReportSource = oRpt;
}
else
{
this.crystalReportViewer1.Visible = false;

}
}

//首先从数据库中能查出3条记录:
但是现在问题是循环3次后报表上只是显示第一条记录
不知道什么原因

[解决办法]
假如数据库有个字段int 型 a;
当它的值为0时 这个字段就输出 "正常 "而不是输出0


当它的值为1时 这个字段就输出 "迟到 "而不是输出1

可以在报表的字段上面写公式,比如:
if {field}=0 then "正常 "
else if {field}=1 then "迟到 "

读书人网 >C#

热点推荐