Читаем Обработка баз данных на Visual Basic®.NET полностью

Ограничениями называются правила, которые вводятся для поддержания целостности данных в таблице. В модели ADO.NET применяется два типа ограничений целостности данных: UniqueConstraint и ForeignKeyConstraint. Ограничение UniqueConstraint гарантирует, что все значения в указанных полях будут уникальны в рамках всей таблицы. Ограничение ForeignKeyConstraint определяет связь на основе первичного и внешнего ключа в двух таблицах и выполняемые действия в случае добавления, удаления или изменения родительской записи (т.е. первичного ключа). При нарушении заданных ограничений генерируется исключительная ситуация.

Учтите, что ограничения применяются только тогда, когда свойство EnforceConstraints объекта DataSet имеет значение True, которое используется по умолчанию.

Хотя ограничения можно создавать непосредственно, довольно часто они создаются косвенно. Фактически в приведенном ранее примере уже было создано несколько ограничений. Объект UniqueConstraint автоматически создается и включается в коллекцию Constraints объекта DataTable, если для свойства Unique объекта DataColumn задано значение True. Кроме того, объекты UniqueConstraint и ForeignKeyConstraint автоматически создаются при создании отношения между двумя таблицами. В таком случае объект UniqueConstraint создается для связанных полей в родительской таблице, а объект ForeignKeyConstraint — для связанных полей в дочерней таблице.

НА ЗАМЕТКУ

Конечно, объект DataRelation можно создать без определения ограничений, но эффективность такого способа весьма спорна.

Для создания и отображения ограничений таблиц используемого объекта DataSet в данном примере создадим еще одну кнопку и вставим код, приведенный в листинге 5.8.

1. Создайте новую кнопку непосредственно под кнопкой Child ROWS, перетаскивая ее из панели элементов управления.

2. В окне свойств Properties укажите значение btnConstraints для свойства (Name) и значение Constraints для свойства Text.

3. Вставьте код, показанный в листинге 5.8.

Листинг 5.8. Код отображения ограничений

Private Sub btnConstraints_Click(ByVal sender As _

 System.Object, ByVal e As System.EventArgs) _

 Handles btnConstraints.Click

 Dim dt As DataTable Dim rel As DataRelation

 CreateDataSet()

 ' Создание отношения между таблицами Departments и Employees.

 rel = dsEmployeeInfo.Relations.Add(_

  "relDepartmentEmployees", _

  dsEmployeeInfo.Tables("Departments").Columns("ID"), _

  dsEmployeeInfo.Tables("Employees").Columns("DepartmentID"))

 For Each dt In dsEmployeeInfo.Tables

  DisplayConstraints(dt)

 Next dt

End Sub

Private Sub DisplayConstraints(ByVal dt As DataTable)

 Dim i As Integer

 Dim cs As Constraint

 Dim uCS As UniqueConstraint

 Dim fkCS As ForeignKeyConstraint

 Dim columns() As DataColumn

 Me.lstOutput.Items.Add("")

 Me.lstOutput.Items.Add( _

  "CONSTRAINTS FOR TABLE: " & dt.TableName)

 Me.lstOutput.Items.Add( _

 "====================================")

 For Each cs In dt.Constraints

  Me.lstOutput.Items.Add( _

   "Constraint Name: " & cs.ConstraintName)

  Me.lstOutput.Items.Add( _

   "Type: " & cs.GetType().ToString())

  If TypeOf cs Is UniqueConstraint Then

   uCS = CType(cs, UniqueConstraint)

   ' Обработка полей в виде массива

   columns = uCS.Columns

   ' Вывод имен полей.

   For i = 0 То columns.Length – 1

    Me.lstOutput.Items.Add( _

     "Column Name: " & columns(i).ColumnName)

   Next i

  ElseIf TypeOf cs Is ForeignKeyConstraint Then

   fkCS = CType(cs, ForeignKeyConstraint)

   ' Обработка дочерних полей и вывод их имён

   columns = fkCS.Columns

   For i = 0 To columns.Length – 1

    Me.lstOutput.Items.Add( _

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных