Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.03.2015
Размер:
63.99 Кб
Скачать

Этап 5. Передача изменений

Добавим на навигатор кнопку “Сохранить” для передачи изменений в БД

  1. Для добавления нового элемента выберите элемент управления BindingNavigator. На нем справа от последнего элемента появится маленькая направленная вниз стрелочка. Нажмите эту стрелку и вы увидите список всех доступных элементов (Button, Label и других). Добавьте новый элемент Button, задайте ему Свойство DisplayStyle=Text, Cвойство text = Сохранить.

  2. Добавьте в событие «Щелчок по кнопке Сохранить» соответствующий обработчик. (если необходимо измените имен ЭУ так как они называются у вас)

Me.Validate

Me.BindingSource1.EndEdit()

Me. ЗаказTableAdapter.Update(me.Mmm_sqlDataSet)

1-ая строка = После вызова метода Validate форма проверяет достоверность данных.

2-ая строка = Благодаря объекту BindingSource можно соответственно записывать или пропускать изменения с помощью методов EndEdit или CancelEdit. При переxоде к другой записи будет неявно вызван метод EndEdit, если изменения были внесены через связанные элементы управления.

3-ая строка = метод Update передает отложенные изменения, хранимые в объекте DataTable.

Этап 6. Просмотр дочерних данных

На данном этапе приложение позволяет просматривать и изменять данные таблицы Заказы. Доработаем форму так, чтобы можно было работать с составом заказов.

  1. Откройте в конструкторе класс DataSet со строгим контролем типов (созданный на 1-ом этапе данной лабораторной работе) – это можно сделать, например, дважды щелкнув по объекту DataSet в окне SolutionExplorer.

  2. Конструктор класса DataSet со строгим контролем типов автоматически добав­ляет объект DataRelation между двумя таблицами DataSet, но не связывает новый объект DataRelation с объектом ForeignKeyConstraint. Дважды щелкните объект DataRelation между таблицами Заказ и Состав_заказа в конструкторе, вы­берите опцию Both Relation And Foreign Key Constraint и задайте свойствам Update Rule и Delete Rule значения Cascade.

  3. Закройте конструктор окна DataSet с сохранением

  4. Теперь посмотрите содержимое объекта DataSet со строгим контролем типов в окне Data Sources. Вы увидите два отдельных узла состав_заказа, как на рисунке 18: один из узлов — брат, а второй — сын узла «Заказ».

Рисунок 18 – Источник данных

Если пытаться перетащить один из узлов на форму, то произойдет создание объектов DataGndView, TableAdapter, BindingSource для работы с составом_заказов. Разница между показанными на рисунке двумя объектами состоит в том, что при перетаскивании узла состав_заказа БРАТ элемент управления DataGridView выводит на экран все записи таблицы состав_заказа. Если перетащить узел состав_заказа, который приходится узлу заказ сыном, то в DataGridView выводится на экран будут только записи таблицы состав_заказа для нужного нам заказа.

ПОЭТОМУ перетащите на вашу форму объект-сын состав_заказов.

  1. Для объекта DataSet необходимо, чтобы записи в таблице состав_заказа соответствовали выбранному в данный момент в верхней части формы значению таблицы Заказ. Попробуйте запустить форму. Запустив форму в таком виде, как мы сейчас ее сделали, вы получите сообщение об исключительной ситуа­ции. Чтобы указанного со­общения не было, необходимо изменить код таким образом, чтобы код для получения информации о составе заказа появлялся после запроса информации о заказе. Откройте код события Load формы, и исправьте код следующим образом (возможно имена объектов у вас будут другими). Порядок вызова метода Fill должен быть именно таким (сначала для родительской Заказ, потом для дочерней состав_заказов)

Me.ЗаказTableAdapter.Fill(Me.Mmm_sqlDataSet3.заказ)

Me.Состав_заказаTableAdapter.Fill(Me.Mmm_sqlDataSet3.состав_заказа)

Соседние файлы в папке Лабораторные