Ошибка «COM-объект, который был отделен от лежащего в его основе RCW, не может быть использован» - PullRequest
1 голос
/ 23 марта 2012

Я делаю простую университетскую систему баз данных модулей, которая включает в себя обновление и навигацию по различным модулям для различных курсов.У меня есть кнопки «Далее», «Предыдущий», «Первый» и «Последний» для навигации по модулям и их полям, которые назначены текстовым полям, использующим набор данных из таблицы модулей.Мне удалось это сделать, но когда я пытаюсь использовать oleDbCommand, чтобы выбрать имя и фамилию преподавателя из другой таблицы, используя идентификатор преподавателя, связывающий две таблицы.Когда я нажимаю кнопку в первый раз, я получаю только информацию о модуле из таблицы модулей, но не получаю данных об имени или фамилии преподавателя.На втором щелчке я получаю «COM-объект, который был отделен от лежащего в его основе RCW, не может быть использован».ошибка и на третий клик я получаю имя и фамилию репетитора, и все работает отлично.Это смутило меня, так как кнопка, кажется, работает только при щелчках, кратных 3. Кто-нибудь знает, почему это происходит?Вот код:

private void btnFirst_Click(object sender, EventArgs e)
    {
        rownumber = 0;
        ShowProducts();


        string tutorID = datasetModuleInstanceUSB1.Module.Rows[rownumber]["TutorID"].ToString();

        try
        {

            //Open connection
            oleDbConnectionModule.Open();

            //Define connection for command
            oleDbCommandGetTutorName.Connection = oleDbConnectionModule;

            //Define data reader to be used
             OleDbDataReader dR;
            dR = oleDbCommandGetTutorName.ExecuteReader();

            //Set parameter for get tutor name ID

            oleDbCommandGetTutorName.Parameters[0].Value = tutorID;



            if (dR.Read())
            {

                txtboxTutorForename.Text = dR["Forename"].ToString();
                txtboxTutorSurname.Text = dR["Surname"].ToString();

                //Execute get tutor name command
                ;
            }


        }

        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

        finally
        {
            //Close connection
            oleDbConnectionModule.Close();
        }


    }
...