我试图仅返回过去五年的年终信息(12月31日),并在DataGrid中显示该信息。这不包括当年。
我的程序当前显示的是上一年的月末信息,直到当年最近一个月的最后一天(例如:当前月份是2011年5月,我的DataGrid中显示的信息显示了存储的数据2010年1月31日; 2010年2月28日; 2010年3月31日... 2010年12月31日; 2011年1月31日; 2011年2月28日; 2011年3月31日; 4月30日, 2011)。
它还会在2010年12月31日之后添加总计行,在2011年4月30日之后添加另一行。在新的DataGrid中将不需要这两个总计行。
以下是返回月末信息的当前代码的片段。
如果我遗漏了任何信息或者我的问题不明确,请告诉我。
我提前为这样一个菜鸟问题道歉,过去几天让我疯狂的是我无法弄明白这一点。
protected DataSet DS;
protected DataRow dr, dNew;
private void GetInfo()
{
}
private double getDbl(string columnName)
{
if (dr[columnName] != DBNull.Value)
return Double.Parse(dr[columnName].ToString());
return 0;
}
private void Calculate()
{
double cg, na, n, ka, nka, kaa, tca;
double tmr, to, gpo;
int year, rowcnt, rowindx, months;
months = -1;
rowindx = 0;
cg = 0;
na = 0;
n = 0;
ka = 0;
nka = 0;
kaa = 0;
tca = 0;
tmr = 0;
tor = 0;
gpo = 0;
rowcnt = DS.Tables[0].Rows.Count;
if (rowcnt > 0) year = Int32.Parse(DS.Tables[0].Rows[0]["cy"].ToString());
else year = 0;
for (int i = 0; i < rowcnt; i++)
{
months++;
dr = DS.Tables[0].Rows[i]
if (year != Int32.Parse(dr["cy"].ToString())
{
dNew = DS.Tables[0].NewRow();
dNew["ind"] = rowindx;
dNew["cg"] = cg;
dNew["na"] = na;
dNew["n"] = n;
dNew["ka"] = ka / months;
dNew["nka"] = nka / months;
dNew["kaa"] = kaa / months;
dNew["tca"] = tca / months;
dNew["tmr"] = tmr / months;
dNew["tor"] = tor;
dNew["gpo"] = gpo / months;
cg = 0;
na = 0;
n = 0;
ka = 0;
nka = 0;
kaa = 0;
tca = 0;
tmr = 0;
tor = 0;
gpo = 0;
months = 1;
year = Int32.Parse(dr["cy"].ToString());
rowindx++;
DS.Tables[0].Rows.Add(dNew);
dNew = DS.Tables[0].NewRow();
dNew["ind"] = rowindx;
rowindx++;
DS.Tables[0].Rows.Add(dNew);
}
cg += getDbl("cg");
na += getDbl("na");
n += getDbl("n");
ka += getDbl("ka");
nka += getDbl("nka");
kaa += getDbl("kaa");
tca += getDbl("tca");
tmr += getDbl("tmr");
tor += getDbl("tor");
gpo += getDbl("gpo");
dr["ind"] = rowindx;
rowindx++;
}
dNew = DS.Tables[0].NewRow();
dNew["ind"] = rowindx;
dNew["cg"] = cg;
dNew["na"] = na;
dNew["n"] = naum;
dNew["ka"] = ka / months;
dNew["nka"] = nka / months;
dNew["kaa"] = kaa / months;
dNew["tca"] = tca / months;
dNew["tmr"] = tmr / months;
dNew["tor"] = tor;
dNew["gpo"] = gpo / months;
DS.Tables[0].Rows.Add(dNew);
DS.Tables[0].DefaultView.Sort = "ind";
}
答案 0 :(得分:2)
您是否尝试将数据集查询限制为您想要的年份?