Показать недавно вставленные данные SQL в главной форме - PullRequest
0 голосов
/ 03 февраля 2012

У меня небольшая проблема с выяснением этого. Я довольно новичок в C #, но мне кажется, что ответ на этот вопрос должен быть простым.

У меня есть форма, которая отображает данные, которые она извлекает из базы данных SQL. Пользователи могут открывать новое окно и добавлять новые записи в базу данных, и когда они нажимают OK, информация вставляется в базу данных, и окно закрывается.

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

Есть ли у кого-нибудь идеи о том, как получить недавно вставленные данные SQL для отображения в главной форме? Вот мой код для справки:

        try
        {
            conn.Open();
            SqlCommand myCommand = new SqlCommand("INSERT INTO customParts (part_num, date, customer, orig_call, vendor, vendor_pn, price, delivery, packaging, notes) VALUES (@partnum, @getdate, @cust, @callout, @vend, @vend_PN, @cost, @deliv, @pkging, @notes)", conn);
            myCommand.Parameters.AddWithValue("@partnum", partnum);
            myCommand.Parameters.AddWithValue("@getdate", getdate);
            myCommand.Parameters.AddWithValue("@cust", cust);
            myCommand.Parameters.AddWithValue("@vend", vend);
            myCommand.Parameters.AddWithValue("@callout", callout);
            myCommand.Parameters.AddWithValue("@vend_PN", vend_PN);
            myCommand.Parameters.AddWithValue("@cost", cost);
            myCommand.Parameters.AddWithValue("@deliv", deliv);
            myCommand.Parameters.AddWithValue("@pkging", pkging);
            myCommand.Parameters.AddWithValue("@notes", notes);
            myCommand.ExecuteNonQuery();
        }
        catch (Exception ie)
        {
            MessageBox.Show(ie.Message);
        }
        finally
        {
            //Close the connection
            conn.Close();
            //Reload the main window to show new changes
            mainForm firstForm;
            firstForm = new mainForm();
            //Close the window
            this.Close();
        }

Спасибо!

EDIT:

Я пытался добавить этот метод в основную форму:

public static void refreshThis()
{
    Form mainForm = new mainForm();
    mainForm.Refresh();
}

И называя это так:

        finally
        {
            //Close the connection
            if (conn.State != ConnectionState.Closed)
            {
                conn.Close();
            }
            mainForm.refreshThis();
            this.Close();
        }

Но это все еще не работает?

1 Ответ

3 голосов
/ 03 февраля 2012

В вашем коде есть следующая пара строк:

mainForm firstForm;
firstForm = new mainForm();

Хотя эти строки создадут новую форму, которая будет обновлена, она будет уничтожена, как только вы выйдете из блока finally, и пользователь никогда не увидит ее.

Я думаю, что вы действительно хотите, чтобы предоставить Refresh метод в вашем mainForm классе и вызвать его из формы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...