Лабораторная работа № 4
Тема: Навигационный доступ к записям таблицы. Создание формы для ввода информации в таблицу «Товар».
Цель: Приобретения навыков работы с записями таблиц. Использование компонентов среды Delphi для работы с таблицами.
Контрольный пример:
Для работы с таблицами удобно использовать формы, содержащие поля для ввода, списки, комментарии и другие элементы, которые помогают пользователю при занесении данных в базу. Если табл
ица большая, то ее представление в том виде, которые предлагает компонент BDGrid не удобен, а использование всех кнопок компонента DBNavigator в приложении может не понадобиться.
Для работы с таблицами при создании пользовательского приложения используются те же методы доступа к записям, что и в компоненте DBNavigator. Рассмотрим их более подробно.
Для того чтобы начать вводить в таблицу данные, ее необходимо активизировать (или открыть), например, процедурой Open. Для закрытия таблицы используется процедура Close. Для работы с записями могут быть использованы следующие процедуры:
Ø First – установка на первую запись в таблице;
Ø Next – установка на следующую запись;
Ø Last – установка на последнюю запись;
Ø Prior – предыдущая запись;
Ø Insert – вставка строки;
Ø Delete – удалить строку;
Ø Edit – редактирование
Ø и др.
Используя описанные выше методы, создадим новую форму для ввода информации о товаре в таблицу. Дополним таблицу «Товар» новой колонкой Склад, в которой будем указывать количество оставшегося товара. Для этого в Database Desktop дополним в структуре таблицы «Товар» колонку Sklad типа Number, а так же указав минимальное значение 0. Сохраняем таблицу (кнопка Save) и введем некоторые численные значения для нового поля.
Переходим в Delphi и открываем рабочий проект.
1. Перейдем на закладку «Товары» Form2 и удалим находящиеся на ней компоненты DBGrid и DBNavigator.
2. Расположим необходимое количество компонента Label с закладки Standard. Свойству Caption присвоим соответствующие значения (Код, наименование, цена и т. д.).
3. Перейдем на закладку Data Controls и выберем компонент DBEdit (
), который будет отображать поле из таблицы. Напротив каждого Label разместим DBEdit.
4. Изменим следующие свойства DBEdit:
§ DataSource – DM.DS_tovar (связанный с таблицей «Товары»);
§ DataField – указать соответствующее поле из таблицы.
5. Для компонента DBEdit, который соответствует «Коду товара», установим свойство Enabled – False (недоступен), так как пользователь не должен вводить код.
6. Разместим на форме следующие кнопки: Следующий, Новый товар и Сохранить. В свойстве кнопки «Сохранить» по умолчанию укажем недоступность для пользователя, так как она необходима только при добавлении или корректировании записей. Форма будет иметь вид как на рис. 1

Рис. 1. Форма «Товар»
7. Изменим имена (свойство Name) всех кнопок на соответствующие им английские с префиксом bt (напр., кнопка «Сохранить» будет иметь свойство Name – btSave). Изменение имен компонентов, предложенных по умолчанию, делается для придания смыслового значения именам объекта. К тому же пользовательские имена чаще всего гораздо короче, чем предложенные средой Delphi.
8. Обработаем процедуру нажатия на кнопку «Новый товар» (btNew):
DM. Tovar. Insert; {указываем: где находиться таблица (модуль DM), после указываем имя элемента, соответствующего таблицы «Товары» (Tovar) и действие (вставка строки – Insert)}
btSave. Enabled:= true; {делаем кнопку «Сохранить» доступной для пользователя}
9. Обработаем процедуру нажатия кнопки «Сохранить» (btSave):
DM. Tovar. Post; {Сохраняем изменения в таблице}
btSave. Enabled:= false; {Делаем кнопку «Сохранить» снова недоступной}
10. Обработаем процедуру нажатия кнопки «Следующий» (btNext):
DM. Tovar. Next;
11. Самостоятельно настройте последовательный переход по компонентам формы при использовании клавиши Tab. По умолчанию в приложении при переходах курсор будет «прыгать» в той последовательности, в какой объекты располагались при проектировании (чаще всего хаотично). Используйте свойство компонентов Tabolder. Для DBEdit, соответствующего «Коду товара», установите свойство TabStop – False, чтоб на этот компонент нельзя было попасть, используя клавишу Tab.
Индивидуальное задание:
1. Четные варианты. Создайте кнопки «Корректировать», «Последняя запись», «Предыдущая запись» и обработайте их процедуры.
2. Нечетные варианты. Создайте кнопки «Удалить», «Первая запись», «Предыдущая запись» и обработайте их процедуры.


