Дублирование значений в датасет

XXL
Дата: 17.01.2010 16:41:09
Здравствуйте.
Прогружаю грид по хранимой процедуре. Параметр для процедуры берется по изменению значения в Combobox.
Проблема в том, что при повторном запуске процедуры предыдущие строки тоже выводятся.
Например, при первом изменении значений Combobox процедура выдала 5 строк. При повторном изменении того же самого значения Combobox строк уже 10, а должно быть 5.

 using (SqlConnection con = new SqlConnection(connstring))
                {
                    try
                    {
                        con.Open();
                    }
                    catch
                    {
                        MessageBox.Show("Oшибка открытия соединения", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        return;
                    }
                    SqlCommand com = con.CreateCommand();
                    com.CommandText = "dbo.prc_ExamenQuestion_po_param";
                    com.CommandType = CommandType.StoredProcedure;
                    SqlParameterCollection prm = default(SqlParameterCollection);
                    prm = com.Parameters;
                    prm.Add("@id_Fak", SqlDbType.NVarChar, 50);
                    prm["@id_Fak"].Value = curFacultet;
                    prm.Add("@id_exam_card_titul", SqlDbType.NVarChar, 50);
                    prm["@id_exam_card_titul"].Value = cbNumberOfTickets.SelectedValue.ToString();
                    SqlDataAdapter adapt = new SqlDataAdapter();
                    adapt.SelectCommand = com;
                    try
                    {
                        adapt.Fill(myDs, "ExamenQuestion");
                    }
                    catch
                    {
                        MessageBox.Show("Ошибка загрузки оценок по билету", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    con.Close();
                    dgridExamenQuestion.DataSource = myDs;
                    dgridExamenQuestion.DataMember = myDs.Tables["ExamenQuestion"].TableName;
                    for (int i = 0; i < myDs.Tables["ExamenQuestion"].Columns.Count; ++i)
                    {
                        dgridExamenQuestion.Columns[i].HeaderText = myDs.Tables["ExamenQuestion"].Columns[i].Caption.ToString();
                        dgridExamenQuestion.Columns[i].Name = myDs.Tables["ExamenQuestion"].Columns[i].ColumnName.ToString();
                    }
                    dgridExamenQuestion.Columns["id_ProtokolGEC_subocenka"].Visible = false;
   
                }
пробовала поставить перед адаптером очистку.
                 
                        myDs.Tables["ExamenQuestion"].Clear();
   
Но тогда при повторной загрузке сохраненных в датасет значений, происходит их очистка.

Буду очень благодарна за помощь:)
D129
Дата: 17.01.2010 17:12:57
XXL,

У вас
adapt.Fill(myDs, "ExamenQuestion");  

заполняет myDs. А он, похоже, "глобальный" (если я не ошибаюсь..). То есть, сохраняется его значение.
Создавайте его вместе с новым соединением - и тогда грид будет полностью обновляться.
МСУ
Дата: 17.01.2010 17:18:01
Глобальный датасет... Прикольно, Данатас
D129
Дата: 17.01.2010 17:23:43
МСУ
Глобальный датасет... Прикольно, Данатас

Как термин "на уровне класса" - точнее, конечно, но только формально. На слух - ерунда какая-то.
Вроде "классный датасет".

МСУ
Дата: 17.01.2010 17:28:55
D129
"классный датасет"

D129
Дата: 17.01.2010 17:31:20
XXL
Но тогда при повторной загрузке сохраненных в датасет значений, происходит их очистка.

Вот оно что. И редактирование тут же.
Я бы предложил вам тогда - забрать все данные в датасет, и запросы (фильтрующие) делать уже в нем...
XXL
Дата: 17.01.2010 22:29:17
спасибо:)