2013-04-01 4 views
0

Я работаю над методом aa, который извлекает результаты студентов из базы данных студентов, в которых все результаты испытуемых за все годы и классы хранятся в одной таблице, поэтому эта функция будет извлекать результаты работы конкретного отдела класс и хранить его в DataTable в наборе данных, так что это код, который я сделал до сих порпроблемы с таблицей данных и таблицей данных

public void Button1_Click(object sender, EventArgs e) 
{ 
     con.Open(); 
     cmd.CommandText = "SELECT Course.Course_code, Course.Course_name, courseyear.level FROM Course INNER JOIN courseyear ON Course.Course_code = courseyear.Course_code WHERE (courseyear.dep = '" + dep.SelectedValue + "') AND (courseyear.subdep = '" + subdep.SelectedValue + "') AND (courseyear.year = '" + year.SelectedValue + "') AND (courseyear.level = '" + level2.SelectedValue + "')"; 
     da = new SqlDataAdapter(cmd.CommandText, con); 
     ds.Clear(); 
     da.Fill(ds, "junk"); 
     cmd.CommandText = "SELECT Course.Course_code, Course.Course_name, courseyear.level FROM Course INNER JOIN courseyear ON Course.Course_code = courseyear.Course_code WHERE (courseyear.dep = '" + dep.SelectedValue + "') AND (courseyear.subdep = '" + subdep.SelectedValue + "') AND (courseyear.year = '" + year.SelectedValue + "') AND (courseyear.level = '" + level2.SelectedValue + "')"; 
     da = new SqlDataAdapter(cmd.CommandText, con); 
     da.Fill(ds, "subs"); 
     ds.Tables.Add("res"); 
     cnum = ds.Tables["junk"].Rows.Count; 

     //l7de hna kweseen 


     ds.Tables["res"].Columns.Add(new DataColumn("index",typeof(string))); 
     ds.Tables["res"].Columns.Add(new DataColumn("name", typeof(string))); 
     //int rnum = ds.Tables["res"].Rows.Count; 
     for (int x = 0; x < cnum-1; x++) { 

      ds.Tables["res"].Columns.Add(new DataColumn(ds.Tables["junk"].Rows[x].ItemArray[0].ToString(), typeof(string))); 

     }//done inserting subjects 

     dr = ds.Tables["res"].NewRow(); 
     ds.Tables["junk"].Clear(); 
     cmd.CommandText = "SELECT id, name FROM Students WHERE (dep ='"+dep.SelectedValue+"') AND (class = '"+level2.SelectedValue+"') AND (subDep ='"+subdep.SelectedValue+"')"; 
     da = new SqlDataAdapter(cmd.CommandText, con); 
     da.Fill(ds, "junk"); 
     int snum = ds.Tables["junk"].Rows.Count; 
     for (int x = 0; x < snum; x++) 
     { 
      dr = ds.Tables["res"].NewRow(); 
      dr.ItemArray[0] = ds.Tables["junk"].Rows[x].ItemArray[0]; 
      dr.ItemArray[1] = ds.Tables["junk"].Rows[x].ItemArray[1]; 
      //ds.Tables["res"].Rows.Add(dr); 
     }//done inserting students 

     ShowPopUpMsg(ds.Tables["res"].Rows.Count.ToString());//for testing 
     ShowPopUpMsg(snum.ToString());// for testing 
     for (int x = 0; x < cnum ;x++)//for subjects 
     { 
      for (int y =0; y < snum;y++)//for students 
      { 
       ds.Tables["junk"].Clear(); 
       cmd.CommandText = "select course_work+final_exam as exp from results where student_id = '" + ds.Tables["res"].Rows[y ].ItemArray[0] + "' and course_code = '"+ds.Tables["subs"].Rows[x]+"' "; 
       da.Fill(ds, "junk"); 
       ds.Tables["res"].Rows[y].ItemArray[x] = ds.Tables["junk"].Rows[0].ItemArray[0];     
      } 
     } 
     ShowPopUpMsg(ds.Tables["junk"].Rows[0].ItemArray[0].ToString()); 
    } 
    private void ShowPopUpMsg(string msg) 
    { 
     StringBuilder sb = new StringBuilder(); 
     sb.Append("alert('"); 
     sb.Append(msg.Replace("\n", "\\n").Replace("\r", "").Replace("'", "\\'")); 
     sb.Append("');"); 
     ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "showalert", sb.ToString(), true); 
    } 
}</i> 

моя проблема в том, что продолжает говорить мне, что нет строки в позиции 0 на студентов для цикла

+0

Прежде всего, ваш цикл for - бесконечный цикл. Вы не увеличиваете свою переменную 'y'. См. Заголовок for for здесь: for (int y = 0; y Justin

+0

спасибо, я исправил это, но все же –

ответ

0

Возможно, вы захотите используйте два разных адаптера данных для заполнения двух разных наборов данных. Если вы посмотрите на него, вы создаете экземпляр адаптера данных, который сбросит ранее загруженный набор данных «мусор». Поэтому, когда вы пытаетесь получить доступ к «мусорному делу», вы ничего не видите. Попробуйте не создавать экземпляры или пользовательские адаптеры.

+0

yup am using amunk table дважды, потому что мне больше не нужны предыдущие результаты –

Смежные вопросы