Главная страница
Навигация по странице:

  • 15.11 Настройка объекта «PictureBox»

  • 15.12 Кнопка «Фильтры сортировки и поиска»

  • 15.13 Метод загрузки списка авторов из базы данных с помощью хранимой процедуры

  • 15.15 Кнопка «Снять фильтр»

  • 15.17 Кнопка «Сортировка»

  • 15.18 Кнопки «Корзина» и «Добавить в корзину»

  • 15.19 Настройка событий «Click» на кнопках главного меню

  • 15.20 Добавление обработчиков событий для формы «Авторы»

  • 15.21 Добавление обработчиков событий для формы «Клиенты»

  • 15.22 Добавление обработчиков событий для формы «Выбор даты»

  • 15.23 Добавление обработчиков событий для формы «Поставщики»

  • 15.24 Добавление обработчиков событий для формы «Редактирование книги»

  • Лабораторный практикум. Лабораторная работа Обследование предметной области Построение модели ide создание контекстной диаграммы Создание диаграммы декомпозиции Создание диаграммы


    Скачать 5.73 Mb.
    НазваниеЛабораторная работа Обследование предметной области Построение модели ide создание контекстной диаграммы Создание диаграммы декомпозиции Создание диаграммы
    АнкорЛабораторный практикум
    Дата25.12.2022
    Размер5.73 Mb.
    Формат файлаpdf
    Имя файлаЛабораторный практикум.pdf
    ТипПрактикум
    #863633
    страница11 из 12
    1   ...   4   5   6   7   8   9   10   11   12
    . А также установите ширину столбцов, оперируя значением свойства и свойства автоматической установки размера ширины столбца (рисунок 31).
    Рисунок 31 – Окно «Правка столбцов»
    После изменения заголовков столбцов, имена в левой части окна будут заменены на русские.

    230
    Для установите следующие свойства:
    = – это привязка к текущему объекту, мы устанавливали
    внутри панели
    , соответственно теперь этот элемент был привязан к верхней части панели.
    = , установка данного свойства говорит о том, что теперь пользователь не может автоматически добавлять новые строки нажатием горячих клавиш;
    = , установка данного свойства говорит о том, что теперь пользователь не может автоматически удалять строки нажатием горячих клавиш;
    = , установка данного свойства говорит о том, что теперь элементы таблицы доступны только для чтения, но не для редактирования;
    = , установка данного свойства говорит о том, что теперь будет выделяться вся текущая строка целиком, а не одна ячейка таблицы;
    Для объекта на форме установите следующие свойства:
    = – это привязка объекта навигатора ко всем использующим этот же dataSource источник;
    = .
    Добавьте метод изменения сортировки по столбцам в событие
    «ColumnSortModeChanged»: private void dataGridView1_ColumnSortModeChanged(
    object sender,
    DataGridViewColumnEventArgs e)
    { this
    .dataTable1TableAdapter.Fill(
    this
    .dataSet1.DataTable1); this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    LoadAuthorsFromProcToTheList();
    }
    Добавьте обработчик события «CellContentClick»: private void dataGridView1_CellContentClick(
    object sender, DataGridViewCellEventArgs e)
    { this
    .dataTable1TableAdapter.Fill(
    this
    .dataSet1.DataTable1);

    231 this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    LoadAuthorsFromProcToTheList();
    }
    15.11 Настройка объекта «PictureBox»
    Для объекта установите следующие свойства:
    − <(DataBinding) Image> = - – это привязка объекта к конкретному изображению с именем ;
    − Добавьте событие, которое по щелчку левой кнопки мыши будет вызывать диалоговое окно с просьбой указать файл картинки, которую следует загрузить в базу данных: private void pictureBox1_Click(
    object sender, EventArgs e)
    { string address =
    ""
    ; address = SelectOpenFileDialogFileName(address); if
    (address !=
    "Canceld"
    )
    {
    PutImageBinaryIntoDb(@address);
    // запись изображения в БД
    this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    }
    }
    Добавьте метод для загрузки изображения в базу данных
    «PutImageBinaryIntoDb», код которого приведен ниже: private void
    PutImageBinaryIntoDb(
    string iFile)
    {
    // конвертация изображения в байты byte
    [] imageData = null
    ;
    FileInfo fInfo = new
    FileInfo(iFile); long numBytes = fInfo.Length;
    FileStream fStream = new
    FileStream(iFile, FileMode.Open, FileAccess.Read);
    BinaryReader br = new
    BinaryReader(fStream); imageData = br.ReadBytes((
    int
    )numBytes);
    // получение расширения файла изображения не забыв удалить точку перед расширением string iImageExtension = (Path.GetExtension(iFile)).Replace(
    "."
    ,
    ""
    ).ToLower();
    // запись изображения в БД
    using
    (SqlConnection sqlConnection = new
    SqlConnection
    (
    @"Data Source=.\SQLEXPRESS;
    Initial Catalog=BookShopDB;
    Integrated Security = True"
    ))
    // строка подключения к БД
    {

    232 string commandText =
    "UPDATE Books SET screen = @screen, screen_format =
    @screen_format WHERE (BookID = @BookID)"
    ;
    SqlCommand command = new
    SqlCommand(commandText, sqlConnection); command.Parameters.AddWithValue(
    "@screen"
    , (
    object
    )imageData);
    // записываем само изображение command.Parameters.AddWithValue(
    "@screen_format"
    , iImageExtension);
    // записываем расширение изображения command.Parameters.AddWithValue(
    "@BookID"
    , this
    .dataGridView1.Rows[
    this
    .dataGridView1.CurrentRow.Index].Cells[
    "bookIDDataGridViewTextBo xColumn"
    ].Value);
    // записываем расширение изображения sqlConnection.Open(); command.ExecuteNonQuery(); sqlConnection.Close();
    }
    }
    15.12 Кнопка «Фильтры сортировки и поиска»
    Для кнопки установите следующие свойства:
    = «Фильтры сортировки и поиска»;
    − Введите дополнительную переменную flagHeight и событию добавьте следующий код: bool flagHeight = false
    ; private void button5_Click(
    object sender, EventArgs e)
    { if
    (flagHeight) this
    .Height -= 200; else this
    .Height += 200; flagHeight = !flagHeight;
    }
    − Событию добавьте следующий код: private void pictureBox1_MouseHover(
    object sender, EventArgs e)
    { toolTip1.SetToolTip(pictureBox1,
    "Нажмите для изменения картинки"
    );
    }
    15.13 Метод загрузки списка авторов из базы данных с помощью
    хранимой процедуры
    Добавьте метод, загружающий список авторов из базы данных с помощью хранимой процедуры, код метода приведен ниже: private void
    LoadAuthorsFromProcToTheList()
    {
    List<
    string
    > listOfAuthors = new
    List<
    string
    >(); using
    (SqlConnection sqlConnection =

    233 new
    SqlConnection
    (
    @"Data Source=.\SQLEXPRESS;
    Initial Catalog=BookShopDB;
    Integrated Security = True"
    ))
    // строка подключения к БД
    { sqlConnection.Open();
    SqlCommand sqlCommand = new
    SqlCommand(); sqlCommand.Connection = sqlConnection; int
    BookID = 0;
    SqlDataReader sqlReader; sqlCommand.CommandText =
    @"exec spBookAuthorsList @BookID"
    ; string iTrimText = null
    ; for
    (
    int i = 0; i < dataGridView1.Rows.Count; i++)
    {
    BookID =
    Convert.ToInt32(
    this
    .dataGridView1.Rows[i].Cells[
    "authorListIDDataGridViewTextBoxColumn"
    ].Va lue); sqlCommand.Parameters.AddWithValue(
    "@BookID"
    , BookID); sqlReader = sqlCommand.ExecuteReader(); iTrimText = null
    ; while
    (sqlReader.Read())
    // считываем и вносим в лист результаты
    { iTrimText += sqlReader[
    "Authors"
    ].ToString(); iTrimText +=
    "; "
    ;
    } try
    { iTrimText = iTrimText.Remove(iTrimText.Length - 2, 2); this
    .dataGridView1.Rows[i].Cells[
    "Authors"
    ].Value = iTrimText;
    } catch
    (Exception ex)
    {
    } sqlReader.Close(); sqlCommand.Parameters.Clear();
    } sqlConnection.Close();
    } return
    ;
    }
    15.14 Кнопка «Поиск»
    Для кнопки установите следующие свойства:
    = «Поиск»;
    − Событию добавьте следующий код: private void button1_Click(
    object sender, EventArgs e)
    { switch
    (textBox1.Text)
    {

    234 case
    "Название книги"
    : filterString =
    "TitleBookName"
    ; break
    ; case
    "Страниц"
    : filterString =
    "Pages"
    ; break
    ; case
    "Цена"
    : filterString =
    "Price"
    ; break
    ;
    } if
    (String.IsNullOrEmpty(textBox2.Text)) booksBindingSource.Filter =
    ""
    ; else
    { try
    { booksBindingSource.Filter =
    "Convert (["
    + filterString +
    "],"
    +
    "'System.String') LIKE '"
    + textBox2.Text +
    "%'"
    ;
    } catch
    (Exception ex)
    {
    MessageBox.Show(
    "Невозможно выполнить данный поиск"
    );
    }
    } this
    .dataTable1TableAdapter.Fill(
    this
    .dataSet1.DataTable1); this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    LoadAuthorsFromProcToTheList();
    }
    15.15 Кнопка «Снять фильтр»
    Для кнопки установите следующие свойства:
    = «Снять фильтр»;
    − Событию добавьте следующий код: private void button2_Click(
    object sender, EventArgs e)
    { this
    .booksBindingSource.Filter =
    ""
    ; this
    .dataTable1TableAdapter.Fill(
    this
    .dataSet1.DataTable1); this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    LoadAuthorsFromProcToTheList();
    }
    15.16 Кнопка «ОК»
    Для кнопки установите следующие свойства:
    = «ОК»;
    − Событию добавьте следующий код: private void button3_Click(
    object sender, EventArgs e)
    { switch
    (textBox4.Text)
    { case
    "Название книги"
    : filterString =
    "TitleBookName"
    ; break
    ; case
    "Страниц"
    : filterString =
    "Pages"
    ; break
    ; case
    "Цена"
    : filterString =
    "Price"
    ; break
    ;
    }

    235 try
    { this
    .booksBindingSource.Filter =
    "("
    + filterString +
    " LIKE '"
    + textBox3.Text +
    "*')"
    ;
    } catch
    (Exception ex)
    {
    MessageBox.Show(
    "Не могу установить данный фильтр"
    );
    } this
    .dataTable1TableAdapter.Fill(
    this
    .dataSet1.DataTable1); this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    LoadAuthorsFromProcToTheList();
    }
    15.17 Кнопка «Сортировка»
    Для кнопки установите следующие свойства:
    = «Сортировка»;
    − Событию добавьте следующий код: private void button4_Click(
    object sender, EventArgs e)
    { int field = 0; switch
    (textBox6.Text)
    { case
    "Название книги"
    : field = 0; break
    ; case
    "Страниц"
    : field = 1; break
    ; case
    "Цена"
    : field = 2; break
    ; case
    "Авторы"
    : field = 3; break
    ;
    } if
    (field != 3)
    { switch
    (comboBox1.SelectedIndex)
    { case
    0: dataGridView1.Sort(dataGridView1.Columns[field],
    ListSortDirection.Ascending); break
    ; case
    1: dataGridView1.Sort(dataGridView1.Columns[field],
    ListSortDirection.Descending); break
    ;
    }
    } else
    MessageBox.Show(
    "Не могу отсортировать столбец авторов"
    ); this
    .dataTable1TableAdapter.Fill(
    this
    .dataSet1.DataTable1); this
    .booksTableAdapter.Fill(
    this
    .dataSet1.Books);
    LoadAuthorsFromProcToTheList();
    }

    236
    15.18 Кнопки «Корзина» и «Добавить в корзину»
    Добавьте две кнопки и установите их свойства равными «Добавить в корзину» и «Корзина». Добавьте

    237 private
    FrmAuthors FormAuthors;
    Введите переменные с атрибутом public, показанные ниже: public int stateForm; public int bookID;
    Нажмите на форме <Меню> → <Работа с таблицами> → <Авторы>. В описании метода введите следующий код: private void авторыToolStripMenuItem_Click(
    object sender, EventArgs e)
    { stateForm = 10;
    FormAuthors = new
    FrmAuthors
    {
    Owner = this
    };
    FormAuthors.ShowDialog();
    }
    Создайте обработчики событий для остальных кнопок главного меню, при этом объявите переменные остальных форм с атрибутом public.
    Настройте остальные формы и расположенные на них элементы, при этом добавляйте соответствующие ссылки на источники данных в «DataSet».
    15.20 Добавление обработчиков событий для формы «Авторы»
    В обозревателе решений перейдите к форме . Добавьте обработчик события на загрузку формы: private void
    Authors_Load(
    object sender, EventArgs e)
    {
    // TODO: данная строка кода позволяет загрузить данные в таблицу "dataSet1.Authors". При необходимости она может быть перемещена или удалена.
    this
    .authorsTableAdapter.Fill(
    this
    .dataSet1.Authors);
    }
    Добавьте обработчик события на закрытие формы: private void
    FrmAuthors_FormClosing(
    object sender, FormClosingEventArgs e)
    { this
    .authorsTableAdapter.Update(
    this
    .dataSet1.Authors);
    }
    Добавьте обработчик события для открытия специальной формы для выбора даты: int currentCol, currentRow; public
    FrmDate FormDate; public string date; public int state; private void toolStripButton1_Click(
    object sender, EventArgs e)
    { this
    .authorsTableAdapter.Update(
    this
    .dataSet1.Authors);

    238
    } private void dataGridView1_Click(
    object sender, EventArgs e)
    {
    FrmMain global = this
    .Owner as
    FrmMain; state = global.stateForm; if
    (
    this
    .dataGridView1.CurrentCell.ColumnIndex == 4)
    { currentCol = this
    .dataGridView1.CurrentCell.ColumnIndex; currentRow = this
    .dataGridView1.CurrentCell.RowIndex;
    FormDate = new
    FrmDate
    {
    Owner = this
    };
    FormDate.ShowDialog(); try
    { this
    .dataGridView1[currentCol, currentRow].Value =
    Convert.ToDateTime(date);
    } catch
    (Exception ex)
    {
    }
    }
    }
    15.21 Добавление обработчиков событий для формы «Клиенты»
    В обозревателе решений перейдите к форме . Добавьте обработчик события на загрузку формы: private void
    FrmClients_Load(
    object sender, EventArgs e)
    { this
    .clientsTableAdapter.Fill(
    this
    .dataSet1.Clients);
    }
    Добавьте обработчик события на закрытие формы: private void
    FrmClients_FormClosing(
    object sender, FormClosingEventArgs e)
    { this
    .clientsTableAdapter.Update(
    this
    .dataSet1.Clients);
    }
    Добавьте обработчик события для открытия специальной формы для выбора даты: int currentCol, currentRow; public
    FrmDate FormDate; public string date; public int state; private void dataGridView1_Click(
    object sender, EventArgs e)
    {
    FrmMain global = this
    .Owner as
    FrmMain; state = global.stateForm; if
    (
    this
    .dataGridView1.CurrentCell.ColumnIndex == 4)
    {

    239 currentCol = this
    .dataGridView1.CurrentCell.ColumnIndex; currentRow = this
    .dataGridView1.CurrentCell.RowIndex;
    FormDate = new
    FrmDate
    {
    Owner = this
    };
    FormDate.ShowDialog(); this
    .dataGridView1[currentCol, currentRow].Value = Convert.ToDateTime(date);
    }
    }
    15.22 Добавление обработчиков событий для формы «Выбор даты»
    В обозревателе решений перейдите к форме .
    Добавьте обработчик события «DateSelected» на элемент «MonthCalendar»: private void monthCalendar1_DateSelected(
    object sender, DateRangeEventArgs e)
    { var dateTime = monthCalendar1.SelectionRange.Start; textBox1.Text = dateTime.ToShortDateString();
    }
    Добавьте обработчик события «Click» на кнопку «Подтвердить выбор даты»: private void button1_Click(
    object sender, EventArgs e)
    {
    FrmClients main = this
    .Owner as
    FrmClients; if
    ((main != null
    ) && (main.state == 11))
    { main.date = textBox1.Text; this
    .Close(); return
    ;
    }
    FrmAuthors main2 = this
    .Owner as
    FrmAuthors; if
    ((main2 != null
    ) && (main2.state == 10))
    { main2.date = textBox1.Text; this
    .Close(); return
    ;
    }
    }
    15.23 Добавление обработчиков событий для формы «Поставщики»
    В обозревателе решений перейдите к форме . Добавьте обработчик события на загрузку формы: private void
    FrmDeliveries_Load(
    object sender, EventArgs e)
    { this
    .deliveriesTableAdapter.Fill(
    this
    .dataSet1.Deliveries);

    240 this
    .dataSet1.Deliveries.Columns[0].AutoIncrementSeed = this
    .dataSet1.Deliveries.Rows.Count + 1; this
    .dataSet1.Deliveries.Columns[0].AutoIncrementStep = 1;
    }
    Добавьте обработчик события на закрытие формы: private void
    FrmDeliveries_FormClosing(
    object sender, FormClosingEventArgs e)
    { try
    { this
    .deliveriesTableAdapter.Update(
    this
    .dataSet1.Deliveries);
    } catch
    (Exception ex)
    {
    }
    }
    15.24 Добавление обработчиков событий для формы «Редактирование
    книги»
    В обозревателе решений перейдите к форме .
    Объявите следующие перменные: public
    DataSet dsForOrder; public
    BindingSource binSrcForOrder; public int
    ? ListID; public string cmb;
    Добавьте обработчик события на загрузку формы: private void
    FrmEditBooks_Load(
    object sender, EventArgs e)
    { this
    .publishHouseTableAdapter.Fill(
    this
    .dataSet1.PublishHouse); this
    .spListAllAuthorsTableAdapter.Fill(
    this
    .dataSet1.spListAllAuthors); this
    .authorsTableAdapter.Fill(
    this
    .dataSet1.Authors); this
    .authorListTableAdapter.Fill(
    this
    .dataSet1.AuthorList);
    FrmMain main = this
    .Owner as
    FrmMain; dsForOrder = new
    DataSet(); dsForOrder = main.dsFromMain; binSrcForOrder = new
    BindingSource(); binSrcForOrder = main.bsFromMain; this
    .textBox1.DataBindings.Add(
    new
    System.Windows.Forms.Binding(
    "Text"
    , this
    .binSrcForOrder,
    "TitleBookName"
    , true
    )); this
    .textBox2.DataBindings.Add(
    new
    System.Windows.Forms.Binding(
    "Text"
    , this
    .binSrcForOrder,
    "Pages"
    , true
    )); this
    .textBox3.DataBindings.Add(
    new
    System.Windows.Forms.Binding(
    "Text"
    , this
    .binSrcForOrder,
    "AuthorListID"
    , true
    )); this
    .label7.DataBindings.Add(
    new
    System.Windows.Forms.Binding(
    "Text"
    , this
    .binSrcForOrder,
    "PublishID"
    , true
    )); cmb = label7.Text; try
    { this
    .comboBox1.SelectedValue = Convert.ToInt32(cmb); } catch
    (Exception ex) { } this
    .label4.DataBindings.Add(
    new
    System.Windows.Forms.Binding(
    "Text"
    , this
    .binSrcForOrder,
    "BookID"
    , true
    )); this
    .textBox4.DataBindings.Add(
    new
    Binding(
    "Text"
    , this
    .binSrcForOrder,
    "Price"
    , true
    ));

    241 try
    { ListID = Convert.ToInt32(
    this
    .textBox3.Text); } catch
    ( Exception ex ) {
    } this
    .spBookAuthorsListTableAdapter.Fill(
    this
    .bookShopDBDataSet1.spBookAuthorsList, ref
    ListID);
    }
    Добавьте обработчик события «Click» на кнопку «Добавить автора»: private void button1_Click(
    object sender, EventArgs e)
    { using
    (SqlConnection sqlConnection = new
    SqlConnection
    (
    @"Data Source=.\SQLEXPRESS;
    Initial Catalog=BookShopDB;
    Integrated Security = True"
    ))
    // строка подключения к БД
    { string commandText =
    "INSERT AuthorList (AuthorListID, AuthorID) VALUES
    (@AuthorListID, @AuthorID)"
    ;
    SqlCommand command = new
    SqlCommand(commandText, sqlConnection); command.Parameters.AddWithValue(
    "@AuthorListID"
    , textBox3.Text); command.Parameters.AddWithValue(
    "@AuthorID"
    , this
    .dataGridView3.Rows[
    this
    .dataGridView3.CurrentRow.Index].Cells[
    "AuthorID"
    ].Value); sqlConnection.Open(); try
    { command.ExecuteNonQuery();
    } catch
    (Exception ex)
    {
    } sqlConnection.Close();
    } this
    .spBookAuthorsListTableAdapter.Fill(
    this
    .bookShopDBDataSet1.spBookAuthorsList, ref
    ListID);
    }
    Добавьте обработчик события «Click» на кнопку «Удалить автора»: private void button2_Click(
    object sender, EventArgs e)
    { if
    (
    this
    .dataGridView2.Rows.Count != 0)
    { using
    (SqlConnection sqlConnection = new
    SqlConnection
    (
    @"Data Source=.\SQLEXPRESS;
    Initial Catalog=BookShopDB;
    Integrated Security = True"
    ))
    // строка подключения к БД
    { string commandText =
    "DELETE FROM AuthorList WHERE (AuthorListID =
    @AuthorListID AND AuthorID = @AuthorID)"
    ;
    SqlCommand command = new
    SqlCommand(commandText, sqlConnection); command.Parameters.AddWithValue(
    "@AuthorListID"
    , textBox3.Text); string aID =
    Convert.ToString(
    this
    .dataGridView2.Rows[
    this
    .dataGridView2.CurrentRow.Index].Cells[1].Value
    ); command.Parameters.AddWithValue(
    "@AuthorID"
    , this
    .dataGridView2.Rows[
    this
    .dataGridView2.CurrentRow.Index].Cells[1].Value); sqlConnection.Open(); try
    {

    242 command.ExecuteNonQuery();
    } catch
    (Exception ex)
    {
    } sqlConnection.Close();
    } this
    .spBookAuthorsListTableAdapter.Fill(
    this
    .bookShopDBDataSet1.spBookAuthorsList, ref
    ListID);
    }
    }
    Добавьте обработчик события «Click» на кнопку «Отмена»: private void button4_Click(
    object sender, EventArgs e)
    {
    FrmMain main = this
    .Owner as
    FrmMain; if
    (main.stateForm == 1) this
    .Close(); if
    (main.stateForm == 2)
    { using
    (SqlConnection sqlConnection = new
    SqlConnection
    (
    @"Data Source=.\SQLEXPRESS;
    Initial Catalog=BookShopDB;
    Integrated Security = True"
    ))
    // строка подключения к БД
    { string commandText =
    "DELETE FROM Books WHERE (BookID = @BookID)"
    ;
    SqlCommand command = new
    SqlCommand(commandText, sqlConnection); command.Parameters.AddWithValue(
    "@BookID"
    ,
    Convert.ToInt32(label4.Text)); sqlConnection.Open(); try
    { command.ExecuteNonQuery();
    } catch
    (Exception ex)
    {
    } sqlConnection.Close();
    } main.UpdateFormChanges(); this
    .Close();
    }
    }
    Добавьте обработчик события «Click» на кнопку «Сохранить изменения и выйти»: private void button3_Click(
    object sender, EventArgs e)
    { using
    (SqlConnection sqlConnection = new
    SqlConnection
    (
    @"Data Source=.\SQLEXPRESS;
    Initial Catalog=BookShopDB;
    Integrated Security = True"
    ))
    // строка подключения к БД
    {

    243 string commandText =
    "UPDATE Books SET TitleBookName = @TitleBookName, Pages
    = @Pages, Price = @Price, PublishID = @PublishID WHERE (BookID = @BookID)"
    ;
    SqlCommand command = new
    SqlCommand(commandText, sqlConnection);
    Decimal Price; try
    {
    Price = Convert.ToDecimal(textBox4.Text);
    } catch
    (Exception ex)
    {
    Price = 0;
    } command.Parameters.AddWithValue(
    "@TitleBookName"
    , textBox1.Text); command.Parameters.AddWithValue(
    "@Pages"
    , Convert.ToInt32(textBox2.Text)); command.Parameters.AddWithValue(
    "@BookID"
    , Convert.ToInt32(label4.Text)); command.Parameters.AddWithValue(
    "@Price"
    , Price); command.Parameters.AddWithValue(
    "@PublishID"
    ,
    Convert.ToInt32(comboBox1.SelectedValue)); sqlConnection.Open(); try
    { command.ExecuteNonQuery();
    FrmMain main = this
    .Owner as
    FrmMain; main.UpdateFormChanges();
    } catch
    (Exception ex)
    {
    } sqlConnection.Close();
    } this
    .Close();
    }
    1   ...   4   5   6   7   8   9   10   11   12


    написать администратору сайта