string query = "select 应缴日期,总计,业主房号 from 业主缴费表 where 缴费日期=''";//未缴费的业主查询
          SqlCommand myCommand = new SqlCommand(query, myConnection);
        myConnection .Open ();
        SqlDataReader myReader = myCommand.ExecuteReader();
        DateTime d3=DateTime .Now ;
        float f=0.0F;
        ArrayList al = new ArrayList();
        ArrayList al1 = new ArrayList();
       
    //以下为找出要交滞纳金的业主并存储其业主号到al1数组,要交滞纳金金额存储到al数组
       while (myReader .Read ())        {
          for(int i=0;i<myReader.FieldCount ;i++)
          {
              DateTime d= myReader.GetDateTime (0);//应缴费日期
              float f1 = float .Parse (myReader.GetValue(1).ToString ());//应缴费金额
            string  c = myReader.GetValue(2).ToString ();//业主房号           //若超出应缴日期15天则要交滞纳金
             if(d.Month ==d3.Month &d.Date.AddDays (15).Day  <=d3.Day )
              {
                  al[i]=(d3 .Day  -d.Day  )*0.15*f1;
                  al1[i] = c;
              }
              if (d.Month <d3.Month &d3.Day+30-d.Day >=15)
              {
                 al[i]=(d3 .Day-30-d.Day -15)*0.15*f1;
                 al1[i] = c;
              }
}
}
asp.net运行报错为:索引超出范围。必须为非负值并小于集合大小。
参数名: index 

解决方案 »

  1.   

    al.Add((d3 .Day  -d.Day  )*0.15*f1); 
    al1.Add(c);
    调试看看值
      

  2.   

     非常感谢您上边我调试了是没问题了可是接下来
    //以下是修改业主缴费表即对应缴滞纳金的业主插入对应的滞纳金金额我的代码是
    for (int i = 0; i < al.Count; i++)
            {
                string update = "update 业主缴费表 set 应缴滞纳金=al[i] where 业主房号='al1[i] '";
                SqlCommand sql = new SqlCommand(update, myConnection);
                sql.ExecuteNonQuery();        }
            Connection.Close();
    asp.net运行报错为
    mySystem.Data.SqlClient.SqlException: 第 1 行: 'i' 附近有语法错误。很可能又是对动态数组取其值得错误,能否帮忙解决,好让我结贴给分嘿嘿
      

  3.   

    string update = "update 业主缴费表 set 应缴滞纳金='"+al[i]+"' where 业主房号='"+al1[i]+"'";