Работа с базой данных с использованием экранной формы
Следующая задача - научиться пользоваться той экранной формой, основу которой предложил Мастер и которая содержит некоторый набор кнопок для работы с информацией базы данных. Для последующей работы с отчетами с группировкой данных нам необходимо, используя ее правила заполнения, занести в базу данных информацию о студентах не менее 2 факультетов, на каждом факультете должно быть 2-3 группы, в каждой группе несколько студентов, у каждого студента - 3-5 оценок.
Назначение кнопок, на которых вместо надписей мы задали показ картинок (см. рис. 5.7.), поясняется подсказками у курсора мыши (ToolTipText) и на строке состояния (StatusBarText), однако эти сообщения в библиотечном объекте написаны на английском языке. Если использовать в дальнейшем библиотеки из папки VFP Wizards, следует перевести на русский язык сообщения и надписи на экранных формахэтих библиотек. В табл. 5.2. приведено назначение стандартных кнопок экранной формы.
1. | Перейти к первой записи | Top record | Go to top of table |
2. | Перейти к предыдущей записи | Previous record | Skip to previous record |
3. | Перейти к следующей записи | Next record | Skip to next record |
4. | Перейти к последней записи | Bottom record | Go to bottom of table |
5. | Поиск записей | Find records | Search for records |
6. | Напечатать отчет | Print report | Print to report |
7. | Добавить/сохранить запись | Add/Save record | Add new record/Save edits |
8. | Редактировать/отменить изменения | Edit/Revert record | Edit existing record/Revert edits |
9. | Удалить запись | Delete record | Delete existing record |
10. | Выйти из формы | Exit form | Exit input form |
Как видно из табл. 5.2., кнопки 7 и 8 имеют двойное назначение, которое изменяется после нажатия на кнопку. Текст процедур, связанных с методом ClickEvent для кнопок, находится в классе txtbtns библиотеки wizbtns.vcx, где его можно изучить. Если для кнопки 7 возникнет необходимость использовать нестандартную команду добавления данных, нужно скопировать процедуру библиотечного объекта в метод ClickEvent своей кнопки и отредактировать фрагмент программы (в фигурных скобках - комментарии к программе):
IF THIS.Parent.EditMode {если нажата кнопка и мы в режиме редактирования} THIS.Parent.UpdateRows() { сохранить запись, процедура группы кнопок - родительского объекта} ELSE IF !THIS.Parent.AddRec() {иначе - к процедуре добавления записей} RETURN ENDIF ENDIF THIS.Parent.EditMode = !THIS.Parent.EditMode {изменение свойства EditMode } THIS.Parent.AddMode = THIS.Parent.EditMode {изменение свойства AddMode } THIS.Parent.TopFile = .F. THIS.Parent.ButtonRefresh() {обновление параметров кнопок 5 -10 } THIS.Parent.NavRefresh() {обновление параметров кнопок 1-4 и объектов формы}
Наиболее сложные функции - у кнопок 7 в режиме добавления данных, кнопок 5 и 6. Эти кнопки вызывают запуск в работу библиотечных экранных форм для добавления, поиска записей и вывода отчетов, вид которых в Конструкторе (после перевода надписей на русский язык и модификации формы поиска) приведен на рис. 5.17-5.19.
Рис. 5.17. Экранная форма GridAddForm библиотеки wizbtns.vcx
Рис. 5.18. Экранная форма SearchForm библиотеки wizbtns.vcx(добавлен объект Grid1 для показа таблицы, в которой выполняется поиск)
Рис. 5.19. Экранная форма вывода отчета библиотеки _report.vcx
Порядок ввода новых данных с использованием разработанной формы следующий:
- запускаем в работу экранную форму;
- нажимаем кнопку 7 - "Добавить запись", выбираем, что будем добавлять - нового студента (главная таблица) или оценку студента (дочерняя таблица); в последнем случае значение ключевого поля в дочернюю таблицу заносится автоматически;
- выполняем ввод новых данных;
- нажимаем кнопку 7, которая изменила картинку и превратилась в команду "Сохранить запись";
- при необходимости повторяем все со второго пункта.