Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК ПП1 (C++ БД).doc
Скачиваний:
4
Добавлен:
01.03.2025
Размер:
5 Мб
Скачать
☆

Работа 2.4. Ввод данных посредством вспомогательных словарей.

[1], с.602-605

Цель: Изучение способов ввода данных в поля таблицы БД с помощью выпадающих меню.

Результат: Получить интерфейс, аналогичный рис. 102-103.

Компоненты: DBComboBox , PickList.

Рис. 102. Ввод из выпадающего меню PickList

Последовательность действий.

  1. С помощью DBD добавьте к таблице tSpisok два поля : «Город» и «Специальность».

  2. В сетке gSpisok заполнить выпадающий список колонки «Специальность» перечнем специальностей (рис. 102).

  3. На панелях Panel1 и Panel2 установить компонент DBComboBox, связать его по свойству DataField с полем «Город», заполнить его выпадающий перечень городов и получить интерфейс, аналогичный рис. 103. Такие списки будем называть вспомогательными словарями.

Рис. 103. Ввод из выпадающего меню DBComboBox

Сравните эти два способа заполнения полей данных, обращая внимание на то обстоятельство, что список PickList работает только, если таблица gSpisok разрешает прямое редактирование, то есть её свойство ReadOhly=true. Компонент DBComboBox работает независимо от значения этого свойства.

Содержание отчёта: см.п. 3.5 «Требования к оформлению отчетов по лабораторным работам».

Работа 2.5. Связи таблиц типа 1:1 и 1:n

[1], с.566-569

Цель: Изучение способов связи таблиц базы данных.

Результат: Получить интерфейс, аналогичный рис. 105.

Последовательность действий.

  1. С помощью DBD добавьте к базе данных две новые таблицы с соответствующими источниками данных :

а) таблицу «Паспорт» (tPasport ) с источником dsPasport;

б) таблицу «Оценки» (tOtmetki )с источником dsOtmetki (рис. 104).

Рис. 104. Три таблицы базы данных

Предусмотрите такие поля таблиц – рис. 105 и 106.

Рис. 105. Структура таблицы «Паспорт»

Рис. 106. Структура таблицы «Оценки»

Для таблицы tOtmetki постройте вторичный индекс по полю Shifr с именем indOtmetkiShifr.

  1. Таблица tPasport является ведомой по отношению к таблице tSpisok и относится к ней по принципу 1:1. Для демонстрации такой связи предусмотрите на интерфейсе столько компонентов типа DBEdit, сколько полей в ведомой таблице tPasport (рис. 107)

Рис. 107. Свяь 1:1 таблиц tPasport и tSpisok

Для организации связи установите свойства dsSource всех этих компонентов как dsSource=dsPasport, а свойствам DataField присвойте имена соответствующих полей, например DataField= Npasporta и т.д.

  1. Установление связи 1:1 происходит за счет настройки свойств MasterSource и MasterFields ведомой таблицы dsPasport, а именно:

MasterSource=dsSpisok;

MasterFields=Shifr.

Задайте эти значения, запустите программу и для каждой записи ведущей таблицы введите разумные значения. Наблюдайте, что при изменении положения курсора в таблице «Список» синхронно изменяются поля ведомой таблицы (рис. 108).

Рис. 108. При изменении положения курсора в таблице «Список» синхронно изменяются поля табоицы «Паспорт»

  1. Добавьте к интерфейсу сетку типа DBGrid с именем gOtmetki . Таблица tOtmetki связана с таблицей tSpisok отншением 1:N. Для его установки следует настроить только ведомую таблицу tOtmetki. Для этого установите значения следующих свойств (как на рис. 109).

Рис. 109. Установка связи 1:N между таблицами tSpisok и tOtmetki

  1. Задайте эти значения, запустите программу и для каждой записи ведущей таблицы введите с клавиатуры несколько строк с разумными значениями, как на рис. 110.

Рис. 110. Демонстрация связи 1:N между таблицами tSpisok и tOtmetki

Содержание отчёта: см.п. 3.5 «Требования к оформлению отчетов по лабораторным работам».