Полезная информация

РАБОТАЕМ С ДАННЫМИ

КОМПЬЮТЕРНАЯ ГАЗЕТА

Microsoft Access, шаг третий

Если продолжить проводить аналогию с китами, на которых держался мир, в представлении древних, то третьим китом Microsoft Access являются формы. Как вы уже, несомненно, заметили, персональный компьютер обычно живет своей собственной жизнью. Причем нередко эта жизнь является тайной за семью печатями, так как человек далеко не всегда может вообще догадываться о сути происходящего. В той или иной степени он судит о выполняемых компьютером операциях на основе того, что изображается на экране монитора, то есть на основе реакции пользовательского интерфейса. По принятой в Microsoft Access терминологии этот интерфейс называется формой. Таким образом, пользователь общается с СУБД посредством форм и может даже не догадываться, какую работу в это время на самом деле выполняет программа. Следовательно, насколько удачно спроектирована пользовательская форма, настолько удобной получится созданная СУБД.

kg90404a.jpg (14010 bytes)

kg90404b.jpg (11255 bytes)

kg90404c.jpg (9493 bytes)

kg90404d.jpg (10169 bytes)

kg90404e.jpg (11834 bytes)

© Компьютерная газета

Собственно, формы в Microsoft Access выполняют две основные функции. Во-первых, они позволяют пользователю оперировать данными, хранящимися в конкретной СУБД, а во-вторых, они позволяют связывать воедино разнообразные дискретные модули СУБД, превращая их в целостный законченный инструмент для определенной работы.
Согласно правилам, принятым в Microsoft Access, все формы, к чему бы они ни относились, создаются, редактируются и хранятся исключительно на вкладке "Формы", рабочей области Microsoft Access. Поэтому в дальнейшем мы будем в основном оперировать именно этой вкладкой. Первоначально в новой базе данных она совершенно пуста, так как еще нет ни одной формы. Их как раз и предстоит создать.
Процесс конструирования новой формы во многом напоминает процедуру создания нового запроса или таблицы. Все начинается с нажатия экранной кнопки "СОЗДАТЬ". Как вы наверняка уже догадались, СУБД Microsoft Access тут же запускает очередную мастер-программу, рассчитанную на то, чтобы максимально облегчить последующую работу и снять с пользователя как можно большую часть черновой работы. Следует заметить, что подобный подход достоин похвалы, ибо он делает СУБД Microsoft Access доступной не только для прожженных профессионалов, но и для самого широкого круга пользователей, что называется, самого начального уровня. Задача появившегося мастера (см. рис. 1) - выяснить, какую конкретно форму предполагается создать и какими данными она в дальнейшем будет оперировать. Рабочее окно мастера состоит из двух компонентов: перечня возможных вариантов самой формы и расположенного ниже поля с выпадающим списком, в котором следует сказать, на какую таблицу или запрос результату работы впоследствии предстоит опираться.
Как следует из самого определения сути формы, она может оперировать лишь теми объектами, которые содержат в себе фактические данные. Таких объектов в Microsoft Access два: таблица и запрос. Следовательно форма может быть создана на основе таблицы, запроса или их определенной комбинации. В последнем случае используются так называемые сложные формы. О них речь пойдет позднее, а пока нужно понять вообще суть механизма формы и освоить общие принцыпы их создания. Поэтому откройте выпадающий список поля "Выберите в качестве источника данных таблицу или запрос" и выберите там имя "Продажи". Оно должно там быть потому, что мы в прошлый раз, конструируя запрос, создали эту таблицу, а я надеюсь, что вы не стремитесь тут же выбрасывать в мусорку все, что кажется вам ненужным по окончанию экспериментов. В данном случае я буду оперировать той же базой, которая была создана для объяснения механизма разработки запроса. Поэтому в моем случае в указанном выше выпадающем списке содержатся два имени: "Продажи" и "Продажи Запрос". А вообще, Microsoft Access автоматически помещает в этот перечень имена всех таблиц и запросов, какие только вообще существуют в данной СУБД. С одной стороны, такое весьма и весьма удобно, так как уменьшает количество вспомогательных операций на поиск нужного объекта, но с другой стороны, это накладывает особые требования на присвоение имен таблицам и запросам, так как в выпадающем списке приводятся только имена, но не уточняется - это запрос или таблица.
Теперь, когда источник данных конкретизирован, остается указать мастеру дальнейшую последовательность операций, потому что для форм разных типов она несколько отличается. Всего имеется семь возможных вариантов.
Первым, конечно же, идет вариант "Конструктор". По аналогии с другими вкладками вы можете сразу понять, что его активизация приведет к попаданию в модуль полностью ручной разработки формы. Позднее вы скорее всего так и будете поступать, ибо любой разработчик всегда стремится придать своему проекту индивидуальные отличительные черты, чего бы они ни касались (тип шрифта, цветовая гамма, расположение полей и так далее), а стандартный мастер всегда выдает стандартный, однотипный, результат.
Вторым вариантом является "Мастер форм". Эта специализированная программа применяется в тех случаях, когда требуется получить достаточно несложный результат, но среди последующих вариантов типовых решений он отсутствует, либо когда вы не желаете особенно возиться с разработкой, но до конца еще не представляете, что должно получиться в результате. Мастер позволяет экспериментировать в достаточно широких пределах, даже возвращаться на один или несколько этапов назад, но при этом берет на себя всю черновую работу.
Вариант "Автоформа в столбец" очень напоминает форму, создаваемую электронными таблицами Microsoft Excel, когда вы включаете режим представления таблицы как базу данных. Мастер опрашивает опорную таблицу, служащую источником данных, получает перечень имеющихся в ней полей и самостоятельно создает экранную форму, в которой все поля расположены в столбец, друг под другом, и следуют в том же порядке, в каком они располагаются в опорной таблице или запросе. Необходимость в подобном решении возникает очень и очень часто, так что разработчики решили стандартизировать данный вариант и придумали специальный мастер.
Аналогичным образом возник вариант "Автоформа ленточная". Результатом его работы будет форма, внешне чрезвычайно сильно похожая на самую обычную таблицу, только стильно оформленную. Этим вариантом удобно пользоваться для вывода на экран итогов работы запроса-выборки, когда в результате получается некоторое количество данных, которые определенным образом взаимосвязаны, как это имеет место быть в любой таблице.
Необходимость создания варианта "Автоформа табличная", лично для меня, так и осталась загадкой. Дело в том, что его активизация приводит к тому же результату, что и предыдущий, только без каких-либо украшений. Единственное, где более или менее оправданно применение этого варианта, - это разработка подчиненных форм, которые впоследствии будут встраиваться в другие формы.
Вариант "Диаграмма" предусмотрен для тех случаев, когда важны не сами конкретные цифры, а так сказать, общая картина. Допустим, анализируя общую картину продаж на некоем рынке, совершенно не имеет значения, сколько конкретно, предположим, двухкамерных морозильников со встроенным управлением, через Интернет было продано каждым из конкурентов. Таким образом, гораздо нагляднее представить итоговую картину в виде диаграммы. Особенно если иллюстрируемый ею факт весьма значителен. Допустим, соседний отдел добился в отчетном периоде повышения производительности труда всего на 3%, а ваш - аж на 90%. Таким образом, на диаграмме "ваш" столбец тут же бросится в глаза руководству даже без дополнительных разъяснений. Подобные ситуации у разработчиков и пользователей СУБД возникают сплошь и рядом, потому программисты Microsoft Corporation предпочли заранее заложить отдельный специализированный мастер, который бы умел полностью автоматически создавать формы, содержащие диаграммы.
Весьма любопытен последний вариант - "Сводная таблица". Это наглядное воплощение тесного взаимодействия различных компонентов прикладного пакета Microsoft Office. Как следует из самого определения, любая СУБД в самую первую очередь предназначена для накопления информации и быстрого оперирования ею. Однако это задачи лишь исполнительного персонала, то есть людей, тем или иным образом контактирующих с конечными покупателями, - менеджеров службы продаж, специалистов службы сервиса, сотрудников службы доставки и так далее. Для руководящих работников рамки СУБД несколько тесноваты. Теоретически можно заранее включить в техническое задание на разработку конкретной базы данных условие, согласно которому СУБД должна будет иметь определенный аналитический механизм. Только на практике реальная ситуация постоянно меняется, а значит почти наверняка вскорости этот механизм окажется недостаточным. В свою очередь аналогичный инструментарий электронных таблиц значительно шире и более прост в использовании. Кроме того, для аналитиков почти повсеместно решающее значение имеет только итоговая информация, но желательно, чтобы она была максимально удобно организована. Самым наглядным и часто используемым решением подобного характера является сводная таблица. Чтобы освободить пользователя от достаточно протяженной процедуры экспорта данных из СУБД в электронную таблицу и последующей их переработки, в Microsoft Access сразу предусмотрен вариант "Сводная таблица", в результате применения которого из таблицы или запроса, минуя все промежуточные шаги, сразу получается сводная таблица в формате Microsoft Excel. Очень удобно.
В нашем случае имеет смысл воспользоваться вторым вариантом. Сразу забираться в дебри конструктора нецелесообразно без наличия определенного багажа начальных навыков, а все автоформы работают совершенно самостоятельно, не показывая пользователю, каким образом получается конечный результат. Это удобно при разработке СУБД, но совершенно неприемлемо с точки зрения изучения процесса создания формы как таковой. Таким образом, далее следует выбрать ражим "Мастер форм" и нажать экранную кнопку "ОК".
На экране появится новое окно (см. рис. 2), на котором достаточно наглядно представляется первый этап создания любой формы. Содержимое поля со списком "Таблица/Запрос" показывает, данными какого объекта в дальнейшем Microsoft Access собирается манипулировать. В принципе, на текущем этапе можно раскрыть список и выбрать любой другой объект, какой только посчитаете нужным. Содержимое выбранной таблицы или запроса в виде перечня имеющихся там полей немедленно отражается в области "Доступные поля". Вообще говоря, мастер создания формы, по крайней мере на первом этапе, ничем не отличается от аналогичного мастера по созданию запроса. С помощью кнопок со стрелками нужно перебросить необходимые поля в область "Выбранные поля", расположенную справа. Как и в запросах, по желанию разработчика в каждой конкретной форме могут отображаться далеко не все имеющиеся в таблице или запросе поля, и, естественно, порядок их следования в форме зависит только от формальной целесообразности да от взглядов разработчика на данный вопрос. Правда, в этом деле есть одна не бросающаяся в глаза тонкость. Несмотря на былую эйфорию, манипулятор мышь вовсе не вытеснил стандартную компьютерную клавиатуру. Более того, опыт совместной эксплуатации этих устройств показал, что в огромном количестве случаев манипулировать одной лишь клавиатурой значительно эргономичнее, чем отвлекаться периодически на мышь. К примеру, заполняя любую электронную форму, несомненно удобно, когда маркер автоматически перемещается по необходимым полям при нажатии клавиши "ВВОД" или "TAB" в порядке очередности, так сказать. Заполнили одно поле, нажали "ВВОД", тут же перескочили на следующее и продолжили ввод данных. Как минимум, отпадает нужда периодически переносить руку с клавиатуры на мышь и обратно, а это значительно снижает общую физическую нагрузку на оператора ЭВМ. Так вот, каждое поле формы имеет соответствующее свойство, оценивая которое программа и выстраивает очередность активизации полей, как бы выстраивает их в очередь. В режиме конструктора это свойство может быть должным образом откорректировано вручную. Однако если помнить о факторе очередности, то можно сразу сделать так, чтобы, создавая форму, мастер сам все сделал как надо. Для этого достаточно не просто перебросить нужные поля из левой области в правую, а создать ту очередность, в соответствии с которой поля формы будут заполняться пользователем. Возьмите простой пример. Структура построения почтового адреса подразумевает, что сначала следует индекс, потом - наименование страны, далее - город, за ним - улица, потом - дом и квартира, и лишь в самом конце - фамилия, имя и отчество адресата. Значит, создавая форму для заполнения таблицы с почтовыми адресами в какой-нибудь СУБД, следует располагать поля строго в вышеперечисленном порядке, иначе, как минимум, будет неудобно оператору, не говоря уже о прочих сложностях.
Когда с формированием перечня полей формы покончено, можно перейти к следующему этапу построения формы путем нажатия экранной клавиши "ДАЛЕЕ". Вторым этапом этого процесса является конкретизация конечного вида разрабатываемой формы. Как отмечалось ранее, режим "Мастер форм" рекомендуется задействовать в тех случаях, когда вы еще окончательно не определились с типом итога. Однако это подразумевает, что, отсортировав поля, разработчик может прийти к выводу, что вполне приемлем один из стандартных вариантов, которые были перечислены в самом начале. Поэтому на втором окне мастера можно увидеть четыре стандартных внешних вида формы, среди которых присутствуют и представление "в столбец", и "ленточный", и "табличный" (см. рис. 3). Причем, выбирая какой-либо один из них, вы можете тут же увидеть, что примерно может получиться в итоге в каждом из вариантов. Справа от области выбора постоянно обновляется схематическая картинка, символизирующая данный вариант.
Хочу заметить, что, кроме привычных вариантов, перечень второго этапа включает пункт "Выровненный", на котором следует остановиться особо. В отличие от всех прочих, он предназначен для создания своего рода сложного бланка, в котором на одном листе стандартного формата нужно впихнуть максимально большое количество самой разнородной информации. Поэтому разные поля изначально задаются разного размера и даже разной формы. Этот вариант удобно использовать в тех случаях, когда создается форма, которая впоследствии будет распечатываться на бумаге в виде бланка. В особенности, если этим бланком позднее будут пользоваться несколько человек из разных служб. Допустим, менеджер службы продаж заполнил форму на конкретный диван, в которой указал галочками конкретный вариант исполнения, заказанный вид обивки и прочие параметры. Далее ответственный за производство проследил, чтобы заказанные параметры были выдержаны, и по готовности заказа ставит в соответствующем поле дату производства. Бланк передается в руки сотрудника службы доставки, который доставляет заказ по указанному в бланке адресу и просит покупателя расписаться в получении. В конце бланк попадает в архив, который следит, к примеру, за сроком гарантии. Из примера видно, что самое рациональное - спроектировать удобный бланк и точно такую же форму, чтобы легко потом было переносить данные из компьютера на бумагу и обратно. Для большей наглядности воспользуемся именно вариантом "Выровненный" и нажмем экранную кнопку "ДАЛЕЕ".
Теперь наступает очередь третьего этапа (см. рис. 4), на котором пользователю предлагается выбрать вариант оформления фона будущей формы. Их в Microsoft Access 97 предусмотрено десять, и остается лишь выбрать один из них. В качестве своеобразной подсказки можно использовать расположенную справа картинку, показывающую, как будет выглядеть фрагмент формы в том или ином исполнении. Определившись с оформлением, следует опять нажать кнопку "ДАЛЕЕ" и перейти к заключительному этапу.
В конце этой последовательности шагов (см. рис. 5) располагается последний экран, на котором предстоит принять два решения. Во-первых, новая форма должна получить какое-нибудь определенное имя. На нее также распространяется общее правило конструирования имен, согласно которому следует выбирать имена короткие, однозначные и предельно информативные. Слишком общее имя быстро затеряется в длинном списке похожих наименований всех форм текущего проекта, а слишком подробное имя неизбежно будет и достаточно длинным, что также не очень удобно. Во-вторых, надо сказать мастеру, как ему следует поступить далее - показать результат работы и вывести на экран получившуюся форму для обычной в таких случаях работы по вводу или просмотру данных либо переключиться в режим конструктора для внесения завершающих штрихов. Если создаваемая форма проста и однозначна, то следует выбрать первое, если по вашему мнению проект нуждается в некоторой ручной доработке - стоит выбрать второе. Мы пока не станем погружаться в глубины ручного конструирования, а значит закончим разработку формы показом получившегося результата.
Немного "подумав", Microsoft Access 97 обработает все инструкции и сгенерирует готовую форму. Форма выводится в стандартное окно, причем, кроме привычных лифтов вертикальной и горизонтальной прокрутки, отвечающих за перемещение содержимого окна, в левом нижнем углу рамки окна формы располагается счетчик записей, то есть строк той таблицы, или запроса, на основании которой форма создавалась. Нажимая маркером мыши по экранным кнопкам счетчика записей, вы тем самым передаете в форму данные из конкретной строки опорной таблицы, текущий номер которой указан на счетчике.
Все, форма готова к применению. Она, конечно, еще далека от совершенства, например, ее можно перемещать по экрану, менять размеры и тому подобное, однако на данном этапе важно то, что с ее помощью оператор может легко обмениваться данными с таблицей "Продажи".
Александр Запольскис E-mail:  leshy@nestor.minsk.by

© Компьютерная газета