РАБОТАЕМ С ДАННЫМИ | КОМПЬЮТЕРНАЯ ГАЗЕТА
Первые шаги в формообразовании Как уже упоминалось ранее, форма является одним из важнейших компонентов любой базы данных. Она определяет истинные возможности самой СУБД и обеспечивает связь между самими данными и работающими с ними пользователями. (c) Компьютерная газета | Если оставить пока в стороне вопросы дизайна, то при разработке новой формы следует решить для себя один простой вопрос: какой она будет. Дело в том, что как и в области запросов существуют запросы по запросу, так и формы могут быть, словно матрешки, вложены одна в другую. Смысл всего этого заключается в том, что формы бывают разные. В зависимости от своего вида и принципа взаимодействия с таблицами данных они делятся на ленточные, табличные, составные и так далее. Для каждого конкретного случая требуются свои. Если данные напоминают обособленную карточку, то и на экран их желательно выводить именно в таком виде. В этом случае лучше всего подходит обычная форма. Однако если речь идет о некоторой взаимосвязи информации, то обычная форма неприемлема. В случае, если, например, вы разрабатываете форму для учета личного состава большого предприятия, то значительно удобнее, чтобы на одной и той же форме присутствовали сразу и наименование отдела, и персональные карточки на каждого из его сотрудников. В таком случае вам более полезной окажется подчиненная конструкция, берущая информацию из двух и более взаимосвязанных таблиц. Чтобы разобраться в процессе создания форм, стоит начать с самого простого - с обычной формы. Она может быть создана как на основании отдельной уникальной таблицы, так и на основании связанной таблицы. Правда, стоит помнить, что в последнем случае могут существовать некоторые ограничения, например, когда во взаимосвязанной таблице существуют поля, которые непременно должны заполняться вместе с записями основной или главной таблицы. Но о сложном позднее, а пока начнем с простого. Для начала выберем таблицу. Пусть ею будет уже неоднократно применяемая ранее таблица "Литература". Чтобы приступить к разработке формы, нужно перейти в Microsoft Access 97 на соответствующую вкладку и нажать экранную клавишу "СОЗДАТЬ". На экране монитора (см. рис. 1) появится первое окно специализированного пользовательского диалога, выполняющего роль своего рода придорожного указателя, говорящего о смысле выбранного пути. В правом списке присутствует несколько вариантов. Вариант КОНСТРУКТОР означает, что далее вам будет предложено самостоятельно "нарисовать" новую форму, пользуясь встроенным инструментарием разработчика. Этот способ хорош либо для очень простых форм, либо, наоборот, для очень сложных, не предусмотренных настоящим встроенным мастером Microsoft Access 97. Вариант МАСТЕР ФОРМ подходит для тех случаев, когда из большой и длинной таблицы вам требуется поместить на форму всего несколько отдельных полей, однако при этом вы желаете иметь возможность автоматически расположить их на пространстве формы наиболее выгодным образом. Данный мастер позволяет отобрать в таблице такие поля и потом отформатировать их представление в одном из пяти возможных вариантов. Вариант В СТОЛБЕЦ должен быть весьма привычен тем, кто пользовался режимом базы данных в электронных таблицах Microsoft Excel 97. В данном случае все поля формы располагаются друг над другом, и в один конкретный момент времени на экране видны данные только одной из записей таблицы базы данных. Вариант ЛЕНТОЧНАЯ больше подходит тогда, когда опорная таблица хранит некоторые значения одного параметра. Например, ленточная форма прекрасно отражает продажи по датам. В одном столбце можно вывести значения дат, а во втором - объем соответствующих им продаж. Наглядно и удобно. Вариант ТАБЛИЧНАЯ, как следует уже из самого наименования, предназначен для автоматического создания форм, внешне похожих на таблицы. В том случае, если, вместо конкретных цифровых величин, вам нужно показать пользователю более наглядную картинку, то следует использовать вариант ДИАГРАММА. В этом случае, вместо цифр и ячеек, Microsoft Excel 97 автоматически строит диаграмму по указанным полям, под вашим руководством "форматирует" ее и выводит на экран. Ну, и напоследок, для тех случаев, когда возникает необходимость отображать не излишнюю конкретику, а некий интегрированный суммарный результат, вам идеально подойдет вариант СВОДНАЯ ТАБЛИЦА. За каждым вариантом скрывается некоторая последовательность действий, выполнение которой заканчивается получением готовой к применению формы. Единственным исключением является вариант КОНСТРУКТОР, где разработчику приходится в самом прямом смысле слова конструировать. Таким образом, рассмотрев в деталях, например, вариант В СТОЛБЕЦ, можно получить исчерпывающее впечатление о том, как все это, собственно, работает. Остальное, как говорится, дело практического экспериментирования. Итак, в столбец. После определения конечного вида разрабатываемой формы первое диалоговое окно требует привязки ее к конкретной таблице или запросу. Это делается выбором соответствующего наименования в выпадающем списке "Выберите в качестве источника данных таблицу или запрос". Если с этим покончено - нажмите экранную клавишу "ОК". Так как эта процедура не требует никаких дополнительных инструкций, то буквально тут же компьютер выдает итоговый результат (см. рис. 2). Как вы можете убедиться, на поле формы присутствуют два ясно выраженных столбца. Слева - наименование полей. Справа - ячейки с их содержимым. В левой нижней части поля расположен счетчик записей, содержащий указатель номера текущей записи и необходимые клавиши управления, а также указание на их общее количество. Конечно, далеко не каждому, и мне в том числе, могут понравиться те легкомысленные облака, которые Microsoft Access 97 использует в качестве стандартного фона для автоматически разрабатываемой формы базы данных. Поэтому их можно тут же заменить на более подходящее содержимое. Для этого вновь созданную форму следует перевести в режим конструктора (нажатием мышью инструмента ВИД на инструментальной панели в верхней части окна Microsoft Excel 97) (см. рис. 3) и внести необходимые изменения. Это делается достаточно просто. В левом верхнем углу новой формы есть притопленная рамка с черным квадратиком внутри. Если навести на него маркер мыши, правой ее клавишей вызвать контекстно-зависимое меню и выбрать в нем режим СВОЙСТВА, то становятся доступными для ручного манипулирования все настроечные режимы данной формы (см. рис. 4). Среди них, на вкладке Макет, нужно отыскать строку "Рисунок". В расположенном рядом поле прописан путь к графическому файлу в формате .wmf, который Microsoft Access 97 использует в качестве красивого фона. При желании вы можете либо вообще очистить эту строку и отменить всю картинку, либо в графическом редакторе создать собственный уникальный фон в том же расширении и подставить его. Это, как говорится, по выбору стреляющего. Вообще говоря, в данном меню можно перенастроить в форме практически все, от параметров границ окна формы до наличия на ней даже клавиш управления. Нельзя не признать, что решения, придуманные разработчиками данной СУБД, вовсе не всегда оказываются наилучшими. Для большинства случаев они вполне годятся, но это не означает, что толковый разработчик не может придать своему творению собственное уникальное оформление. После окончания редактирования новую форму нужно, естественно, сохранить. Более подробно о том, как редактировать формы, мы поговорим в ближайших номерах, а пока стоит обратить внимание на второе важное свойство формы - служить трафаретом для ввода исходных данных в таблицу. Только что созданная форма не совсем годится для иллюстрации этого свойства, так как таблица, на которую она опирается, является связанной и требует одновременного ввода одного параметра (кода рубрики). Это как раз тот случай, когда при разработке формы лучше всего применять составной вариант. А чтобы проиллюстрировать ввод данных с помощью простой формы, лучше повторить вышеописанные действия для таблицы "Рубрикатор" (см. рис. 5). Обратите внимание, что сейчас таблица данных содержит всего пять записей, о чем наглядно свидетельствует цифра возле клавиш управления записями окна формы. Если, при помощи кнопок PAGE UP, PAGE DOWN или экранных клавиш "промотать" записи до конца, то цифра 5 сменится на 6, а в полях формы появится сообщение "нет данных". Это значит, что программа сгенерировала, но пока не сохранила, новую запись, которую и предлагает заполнить фактическими данными. Как вы помните, поле "Код рубрики" является счетчиком и заполняется автоматически. Пока оно также пустое, но стоит ввести любое значение в поле "Наименование рубрики", как счетчик автоматически сгенерирует необходимую цифру. Когда вы заполните все поля и нажмете "ВВОД" или просто перейдете к следующей "пустой" записи, Microsoft Access 97 выполнит несколько последующих операций. Сначала СУБД сохранит новую запись в той таблице, на основании которой сделана данная форма. Потом Microsoft Access 97 опять создаст временную запись и будет ожидать ваших действий. При этом суммарное число записей в таблице возрастет на единицу, с 5 на 6. Таким образом, это станет наглядным подтверждением факта ввода новых данных. Как вы могли заметить, с формой также удобно работать, как и с самой таблицей, а нередко даже удобнее. Особенно это касается сложных форм, которые позволяют вывести на экран несколько взаимосвязанных записей одновременно, что совершенно не под силу ни одной таблице. Кроме того, механизм форм позволяет прятать от конечного пользователя базы данных все лишнее и в данный момент ненужное, лишь отвлекающее внимание от основной работы. Да и по наглядности представления информации с формой не может тягаться ни одна таблица. По аналогии с таблицами и запросами, все формы, простые и сложные, словом абсолютно все, хранятся в Microsoft Access 97 на вкладке ФОРМЫ, что облегчает их поиск. Форма это точно такой же объект СУБД, как запрос или таблица, а значит ее можно вызывать при помощи макроса или модуля, как того потребует рабочая необходимость. Единственное, что не предусмотрели разработчики СУБД Microsoft Access 97, так это механизм автоматического связывания форм и задания их иерархии. Об этом разработчику придется позаботиться самостоятельно. Александр Запольскис E-mail: leshy@nestor.minsk.by