当前位置:编程学习 > C#/ASP.NET >>

求大神过来指点

 string strsql = "select sum(Months_jihua) Months_jihua,sum(HJ) HJ,Months from s_zhgl_jihua_fysj where years=to_char(getdate(),'yyyy') group by Months order by Months asc ";
        DataSet ds = hp.ExecuteDataSet(strsql);
        int lastmonths = 1;
        int i;
        for (i = 0; i < 12; i++)
        {
            int months = lastmonths + i;
            if (ds.Tables[0].Rows[i]["Months"] != "" || months == Convert.ToInt32(ds.Tables[0].Rows[i]["Months"]))
            {
                string Months = (ds.Tables[0].Rows[i]["Months"].ToString() + "月");
                string MONTHS_JIHUA = (ds.Tables[0].Rows[i]["MONTHS_JIHUA"].ToString());
                string HJ = (ds.Tables[0].Rows[i]["HJ"].ToString());
                Chart1.Series[0].Points.AddXY(Months, MONTHS_JIHUA);
                Chart1.Series[1].Points.AddXY(Months, HJ);
                Chart1.Series[2].Points.AddXY(Months, MONTHS_JIHUA);
                Chart1.Series[3].Points.AddXY(Months, HJ);
            }
            else
            {
                string month = (months + 1).ToString() + "月";
                Chart1.Series[0].Points.AddXY(month, "0");
                Chart1.Series[1].Points.AddXY(month, "0");
                Chart1.Series[2].Points.AddXY(month, "0");
                Chart1.Series[3].Points.AddXY(month, "0");
            }


上面的代码是在查月份 但是数据行有可能没有12行,即没有12个月的数据。如我现在只有1,2,3,4,5,6,9月的数据。我想做判断,没有的月份为空。但是这样做判断时,报错:”在位置 7 处没有任何行。“
求大神求指点,是不是ds.Tables[0].Rows[i]["Months"] != "" || months == Convert.ToInt32(ds.Tables[0].Rows[i]["Months"])这里判断有问题?如果是怎么让他判断行为空时进入else而不是报错”在位置 7 处没有任何行。“? --------------------编程问答--------------------
把循环次数改成 dataset中table的行数 --------------------编程问答-------------------- 这样有多少行就判断多少次 --------------------编程问答-------------------- 你可以这样for (i = 0; i < 12; i++)这里别循环12个月你直接循环你的数据集这样都有数据了。你在循环判断下那个月没没数据补充下0,在输出你的图表控件就可以了。 --------------------编程问答--------------------
引用 3 楼 chuntian1983 的回复:
你可以这样for (i = 0; i < 12; i++)这里别循环12个月你直接循环你的数据集这样都有数据了。你在循环判断下那个月没没数据补充下0,在输出你的图表控件就可以了。

怎么循环判断下那个月没数据 --------------------编程问答--------------------
引用 1 楼 Hsuifengershi 的回复:

把循环次数改成 dataset中table的行数

循环出来的都有数据 我要的十二个月 没数据的为空 --------------------编程问答-------------------- ds.Tables[0].Rows[i]["Months"] != "" 改为 ds.Tables[0].Rows[i]["Months"] !=null --------------------编程问答-------------------- 一般是 先判断是否为null 在判断是否为“” --------------------编程问答-------------------- 纷纷 --------------------编程问答--------------------  string strsql = "select sum(Months_jihua) Months_jihua,sum(HJ) HJ,Months from s_zhgl_jihua_fysj where years=to_char(getdate(),'yyyy') group by Months order by Months asc ";
        DataSet ds = hp.ExecuteDataSet(strsql);
        int lastmonths = 1;
        int i;
        for (i = 0; i < ds.Tables[0].Rows.Count; i++)
        {
            //if (i == ds.Tables[0].Rows.Count - 1) {lastmonths= ds.Tables[0].Rows[i]["Months"].ToString();}
            //if (i == ds.Tables[0].Rows.Count - 1) 
            //{ lastmonths = Convert.ToInt32(ds.Tables[0].Rows[i]["Months"]); }
            int months = lastmonths + i;
            if (ds.Tables[0].Rows[i]["Months"] != null)
            {
                string Months = (ds.Tables[0].Rows[i]["Months"].ToString() + "月");
                string MONTHS_JIHUA = (ds.Tables[0].Rows[i]["MONTHS_JIHUA"].ToString());
                string HJ = (ds.Tables[0].Rows[i]["HJ"].ToString());
                Chart1.Series[0].Points.AddXY(Months, MONTHS_JIHUA);
                Chart1.Series[1].Points.AddXY(Months, HJ);
                Chart1.Series[2].Points.AddXY(Months, MONTHS_JIHUA);
                Chart1.Series[3].Points.AddXY(Months, HJ);
            }
            else
            {
                string month = (months).ToString() + "月";
                Chart1.Series[0].Points.AddXY(month, "0");
                Chart1.Series[1].Points.AddXY(month, "0");
                Chart1.Series[2].Points.AddXY(month, "0");
                Chart1.Series[3].Points.AddXY(month, "0");
            }
现在改成这样 已有的月都会填充 但是怎么把没有的月份设为空? 怎么循环判断出没有的月份? --------------------编程问答-------------------- 你是想在界面上显示12列?

如果是这样的话 
1.创建datatable 添加12列
2.循环你过去的dataset 12次
3.有数据的直接添加到 创建的datatable 美数据的new datarow 添加到创建的datatable
--------------------编程问答--------------------
撸主解决了就给分把 想升5裤衩 --------------------编程问答--------------------
引用 10 楼 Hsuifengershi 的回复:
你是想在界面上显示12列?

如果是这样的话 
1.创建datatable 添加12列
2.循环你过去的dataset 12次
3.有数据的直接添加到 创建的datatable 美数据的new datarow 添加到创建的datatable

额 怎么把有数据的直接添加到创建的datatable 没数据的new datarow 添加到创建的datatable --------------------编程问答-------------------- 搜索下databale 添加行 --------------------编程问答-------------------- 不知道怎么实现创建datatable 添加12列,有数据的直接添加到 创建的datatable 美数据的new datarow 添加到创建的datatable,或者是循环判断下那个月没没数据补充下0 不知道怎么做 --------------------编程问答--------------------
http://www.cnblogs.com/xiongeee/archive/2007/03/22/683693.html --------------------编程问答-------------------- 回到原点 判断下那个月没没数据 --------------------编程问答-------------------- 怎么判断所查的数据行存不存在? --------------------编程问答-------------------- int lastmonths=1;
        for (int i = 0; i < 12; i++)
        {
            //months < ds.Tables[0].Rows.Count && months < Convert.ToInt32(ds.Tables[0].Rows[i]["T_Months"])//if
            //if (i == ds.Tables[0].Rows.Count - 1) {lastmonths= ds.Tables[0].Rows[i]["Months"].ToString();}
            int months = lastmonths + i;
            string str_m = " select sum(tcf) tcf,sum(lltcf) lltcf,to_char(yhdate,'mm') t_months from s_zhgl_Vehicle_yh ";
            str_m += " where to_char(yhdate,'yyyy')=to_char(sysdate,'yyyy') and to_char(yhdate,'mm')='" + months + "' group by to_char(yhdate,'mm') order by to_char(yhdate,'mm') asc ";
            DataSet ds_m = hp.ExecuteDataSet(str_m);
            if (ds_m.Tables[0].Rows.Count > 0)
            {
                string Months = (ds_m.Tables[0].Rows[0]["T_Months"].ToString() + "月");
                string LLTCF = (ds_m.Tables[0].Rows[0]["LLTCF"].ToString());
                string TCF = (ds_m.Tables[0].Rows[0]["TCF"].ToString());
                Chart1.Series[0].Points.AddXY(Months, LLTCF);
                Chart1.Series[1].Points.AddXY(Months, TCF);
                Chart1.Series[2].Points.AddXY(Months, LLTCF);
                Chart1.Series[3].Points.AddXY(Months, TCF);
            }
            else
            {
                string month = (months + 1).ToString() + "月";
                string MONTHS_JIHUA = "0";
                string HJ = "0";
                Chart1.Series[0].Points.AddXY(month, MONTHS_JIHUA);
                Chart1.Series[1].Points.AddXY(month, HJ);
                Chart1.Series[2].Points.AddXY(month, MONTHS_JIHUA);
                Chart1.Series[3].Points.AddXY(month, HJ);
            }
搞定了 留下解决后的 
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,