
Access 2007
.pdf
Рис. 12.6. Когда используется поле быстрого поиска, не нужно нажимать клавишу <Enter>. Программа Access ищет следующее совпадение по мере ввода
■Фильтрация. С помощью фильтрации или отбора вы можете свести множество отображаемых записей к небольшому набору. Главный секрет отбора состоит в возможности применения средства, названного Фильтр по форме (filter by form), для быстрого обнаружения единственной записи. Вы узнаете, как оно действует, в разд. "Применение фильтра по форме" далее в этой главе.
После того как запись, которую вы хотите изменить, найдена, ее можно редактировать точно так же, как на листе данных. Если внесено изменение, нарушающее условие на значение (например, ввод текста "Exasperated Bananas" в поле, хранящее даты), вы получите аналогичные сообщения об ошибках.
Программа Access вносит любое сделанное вами изменение, как только вы переходите к другой записи или в другое поле. Для отказа от изменения нажмите клавишу <Esc> до перехода. После этого исходное значение снова выводится в ячейке, и Access отбрасывает ваши изменения. Если же вы случайно подтвердили внесение изменения, можно воспользоваться кнопкой Отменить на Панели быстрого доступа (над лентой) или нажать комбинацию клавиш <Ctrl>+<Z>, чтобы аннулировать изменение.
Добавление записи
Как вы уже знаете, можно добавить новую запись на лист данных, если перейти в самый конец таблицы и вводить данные в строке, следующей за последней записью. В Режиме формы принцип тот же — перейдите в самый конец таблицы, за последнюю запись.
401

Вы поймете, что достигли желанной точки, готовой к вставке новой записи, когда все поля вашей формы окажутся пустыми (рис. 12.7). Для того чтобы обойтись без прокрутки, воспользуйтесь кнопкой Новая (пустая) запись (New Record) в нижней части формы (помеченной на рис. 12.7).
Рис. 12.7. Когда создается новая запись, вы начинаете с чистого листа, на котором отображается форматирование, но не значения. Если в таблице заданы какие-либо значения по умолчанию, вы увидите вместо пустых полей эти значения. В таблице Products у поля Units In Stock значение по умолчанию 10
Если, в конце концов, вы решили не добавлять новую запись, дважды нажмите клавишу <Esc>. При первом нажатии клавиши <Esc> программа Access стирает значение в текущем поле. При втором нажатии Access удаляет все остальные введенные значения. Теперь, когда форма очищена до исходного состояния, можно переходить к другой записи.
Если вы перешли к другой записи из новой, пока в ней оставались некоторые данные, программа Access создает новую запись и добавляет ее в таблицу. Это действие невозможно отменить. Если нужно избавиться от вновь созданной записи, следует удалить ее, как описано в следующем разделе.
Малоизвестная или, недооцененная возможность. Вывод на экран изображений из БД
Как вы узнали в главе 2, можно хранить файл изображения как часть записи с помощью типа данных Вложение.
402

В формах вложения элегантно обрабатываются с помощью элемента управления Вложение. У элемента управления Вложение есть одно ценное качество — он отображает графическое содержимое непосредственно на форме.
Рассмотрим, как функционирует этот элемент управления. Если поле типа Вложение хранит изображение, это изображение появляется в поле элемента управления Вложение, так что можно любоваться им непосредственно на форме. Подобное поведение — существенное улучшение по сравнению с листом данных, который вынуждает для проверки открывать файл изображения в другой программе. Если поле Вложение хранит несколько изображений, еще важнее то, что можно использовать стрелки на удобной раскрывающейся мини-панели для перехода от одного изображения к другому, как показано на рис. 12.8.
Как вы знаете, поля Вложение могут хранить файл любого типа. Если хранится не изображение, элемент управления Вложение не столь полезен. Вы увидите только пиктограмму программы, которой принадлежит данный тип файла. Если в поле Вложение содержится документ Word, вы увидите пиктограмму Word. Если в поле текстовый документ, отображается пиктограмма программы Блокнот (Notepad) и т. д. Если в ваших полях Вложение содержатся не изображения, можно также изменить размер поля для элемента управления Вложение, чтобы оно было достаточным для отображения пиктограммы типа файла. Нет смысла делать его больше, поскольку остальное пространство просто теряется.
Рис. 12.8. Вверху: поле Рисунок отображает куклу-болванчика. Программа Access подбирает размер рисунка, соответствующий полю элемента Вложение (без неестественного растяжения или перекашивания рисунка). Внизу: когда выбирается поле Рисунок, на экране над рисунком появляется мини-панель с дополнительными элементами. Кнопки-стрелки позволяют просмотреть все вложенные файлы, относящиеся к данной записи. Пиктограмма скрепки открывает окно Вложения, в котором можно добавить или удалить вложения или открыть их в другой программе
403

Удаление записи
Если вы обнаруживаете запись, которой не должно быть, ее можно стереть за секунду. Самый легкий способ удаления текущей - выбрать на ленте Главная → Записи → Удалить (Home → Records → Delete). Но есть и другая возможность. Можно выбрать всю запись, щелкнув кнопкой мыши левое боковое поле в окне формы. После этого можно удалить ее, нажав клавишу <Delete>.
Независимо от того, какой способ вы выберите, программа Access попросит подтверждения, прежде чем удалит запись. Удаленные записи вернуть нельзя, поэтому нажимайте клавишу осторожно.
Печать записей
Существует малоизвестный секрет, связанный с формами. Его можно применять для создания быстрой распечатки.
Рис. 12.9. В этом окне предварительного просмотра показано, что вы получите, если напечатаетеформу со списком клиентов CustomerList. Распечатка соответствует форме, у нее то же форматирование и макет. Когда Access впервые создает форму, ей задается ширина обычного листа бумаги. Когда вы печатаете форму, программа размещает на каждой странице столько записей — в данном случае три — сколько она может вместить
404

Для этого откройте форму и затем выберите: кнопка Office → Печать. На экране появляется знакомое диалоговое окно Печать, в котором можно выбрать принтер и нужное число копий.
Когда вы печатаете форму, программа Access печатает все записи, одну за другой. Если вы хотите напечатать только текущую запись, в диалоговом окне Печать выберите переключатель выделенные записи (Selected Records), прежде чем щелкнуть мышью кнопку ОК.
Для того чтобы просмотреть результат перед выводом на печать, можно выбрать кнопку
Office → Печать → Предварительный просмотр (рис. 12.9). Для того чтобы вернуться в окно формы, щелкните кнопкой мыши Предварительный просмотр → Закрыть → Закрыть окно
предварительного просмотра.
Несмотря на то, что может возникнуть искушение использовать формы как удобный способ создания привлекательных распечаток, применение отчетов предоставляет больше возможностей и лучший контроль.
Сортировка и фильтрация в формах
Сортировка и фильтрация — две незаменимые функциональные возможности, предоставляемые программой Access в Режиме формы. Освоить их на самом деле легко — вы уже узнали, все что нужно, когда подробно знакомились с листом данных в главе 3. Создатели Access хорошенько позаботились о том, чтобы фильтрация и сортировка действовали в формах так же, как на листе данных. Вы применяете одни и те же команды в одной и той же части ленты для запуска этих средств обработки.
Сортировка в форме
Как вы уже, возможно, поняли, данные в формах отображаются в первоначальном неотсортированном порядке. Иными словами, записи выводятся в том порядке, в каком вы их создавали. (Единственное исключение — создание формы, получающей данные из запроса, в котором применялась сортировка.)
Ксчастью, выполнить сортировку легко. На самом деле отсортировать записи, отображаемые
вформе, можно точно так же, как записи на листе данных. Выберите поле, которое хотите использовать для сортировки, щелкните его правой кнопкой мыши и выберите один из вариантов сортировки. В текстовом поле вы увидите варианты Сортировка от А до Я (в алфавитном порядке) и Сортировка от Я до А (в порядке, обратном алфавитному). Можно также использовать кнопки по возрастанию и по убыванию в группе ленты Главная → Сор-
тировка и фильтр.
Дополнительную информацию о вариантах сортировки (включая сортировку по нескольким полям) см. в разд. "Сортировка" главы 3.
Фильтрация в форме
Фильтрация — средство, позволяющее ограничить общее число отображаемых записей только теми, которые вас интересуют. Средствами фильтрации можно отобрать активных клиентов, имеющиеся на складе товары, дорогостоящие заказы и другие группы записей в соответствии с заданными условиями отбора.
405

Формы предоставляют следующие варианты фильтрации или отбора.
■Обычный фильтр отображает список всех значений для конкретного поля и позволяет выбрать те, которые вы хотите скрыть. Его легко применять, но он может потребовать значительного времени. Если вы хотите скрыть числовые значения, попадающие в определенный диапазон, эту работу можно сделать гораздо быстрее с помощью фильтра по условию (filter by condition) (который будет описан чуть позже). Для отображения списка значений обычного фильтра перейдите к полю, которое хотите фильтровать, и щелкните кнопкой мыши Главная → Сортировка и фильтр → Фильтр (Home → Sort & Filter→ Filter). В разд. "Обычный фильтр" главы 3 приведено подробное описание обычных фильтров.
■Фильтр по выделенному применяет фильтрацию, основанную на имеющемся значении. Сначала найдите значение в одной из записей, щелкните его правой кнопкой мыши и выберите вариант отбора. Можно щелкнуть правой кнопкой мыши значение цены $25 и выбрать вариант Больше или равно $25 (Greater Than or Equal to 25) для того, чтобы скрыть дешевые товары. Более подробную информацию см. в разд. "Фильтр по выделенному " главы 3.
■Фильтр по условию позволяет задать точное условие для отбора записей. Оно необязательно должно базироваться на имеющемся значении. Для вставки этого варианта фильтрации щелкните правой кнопкой мыши поле и затем найдите подменю с вариантами отбора. Его название зависит от данных, так для текстовых полей в меню включен вариант Текстовые фильтры, для числовых полей — Числовые фильтры и т. д. Вы можете больше узнать об этом типе фильтра в разд. "Расширенный фильтр" главы 3.
Расширенные фильтры — это фильтры, в которых условия отбора формируются с помощью окна, напоминающего окно Конструктора запросов. Преимущество расширенных фильтров состоит в возможности применения фильтрации сразу по нескольким полям. Для создания набора расширенных фильтров выберите Главная → Сортировка и фильтр → Дополнительно → Расширенный фильтр (Home → Sort & Filter → Advanced Filter Options → Advanced Filter/Sort).
Примечание
Если вы вставляете запись, не отвечающую установленным в данный момент условиям отбора, новая запись будет скрыта, как только вы ее добавите. Для того чтобы вернуть ее на экран, удалите условия фильтрации с помощью ленты: выберите вкладку Главная, щелкните мышью кнопку Дополнительно в группе Сортировка и фильтр и затем выберите команду Очистить все фильтры (Clear All Filters). Или воспользуйтесь кнопкой Применить фильтр (Toggle Filter) для временной приостановки действия фильтра (позже, для того чтобы возобновить действие фильтра, снова щелкните мышью кнопку
Применить фильтр).
Применение фильтра по форме
Существует еще одно средство фильтрации, действующее в формах: фильтр по форме. По сути "фильтр по форме" преобразует форму в полнофункциональную форму поиска (search form). С помощью этой формы поиска вы задаете одно или несколько условий отбора. Затем вы применяете фильтр для отображения записи (или записей), соответствующей условиям отбора.
Несмотря на то, что фильтр по форме можно применять на листе данных, он проявляет себя во всей красе в формах. Фильтр по форме особенно удобен для поиска единственной
406

трудно обнаруживаемой записи. (Если вы хотите применить фильтр для извлечения группы записей, обычно легче воспользоваться любым другим вариантом фильтрации.) Далее описан способ применения фильтра но форме.
1.Выберите на ленте Главная → Сортировка и фильтр → Дополнительно → Изменить
фильтр.
Программа Access переведет форму в режим поиска. В этом режиме форма остается прежней, но все ее поля становятся пустыми.
Если средство "фильтр по форме" уже использовалось, и вы вернулись к нему для того, чтобы изменить параметры фильтрации, следует начать с удаления набора установленных прежде фильтров. Для этого щелкните правой кнопкой мыши пустое место в области формы и выберите команду Очистить бланк (Clear Grid).
2.Перейдите в поле, которое хотите использовать для фильтрации.
Внем появится стрелка, признак раскрывающегося списка.
3.Щелкните кнопкой мыши стрелку раскрывающегося списка и выберите значение, которое хотите включить в результаты.
В раскрывающемся списке отображаются все значения из разных записей таблицы (рис. 12.10). Когда вы выберите одно значение, оно появится в поле в кавычках.
Рис. 12.10. На рисунке представлена форма Customers в режиме фильтра по форме. С помощью раскрывающегося списка вы можете быстро найти клиента по фамилии или найти имя, набрав несколько первых букв, вместо прокрутки списка, как здесь показано. В данном примере набор букв "Ra" приводит к выводу первого буквенного совпадения: фамилии Randawa
4. Если хотите применить фильтр к нескольким полям, вернитесь к пункту 2.
Задайте несколько условий отбора, если одно условие включает в результат больше совпадений, чем вам хотелось бы. Если вы не помните фамилию клиента, можно применить
407

фильтр к полю FirstName. Но если у клиента распространенное имя, может быть, придется применить фильтр к еще одному полю, например City.
Если не нужны точные совпадения, можно создать более сложные фильтры с помощью выражения. Задайте <10 для поиска числовых значений, меньших 10, и Like Jon* для поиска текстовых значений, таких как "Jones", "Jonathon" и "Jonson". Фильтрация особенно эффективна в случае полей с датами. В разд. "Построение условий отбора " главы 6 приводится много примеров условий отбора.
5. Если вы хотите выполнить несколько операций фильтрации и объединить результаты, щелкните кнопкой мыши вкладку Или и задайте дополнительные условия отбора (рис. 12.11).
Рис. 12.11. Вкладка Или отображается в нижней части формы. Когда вы щелкаете вкладку Или, на экране появляется вторая копия формы поиска, в которую можно вставить дополнительные условия отбора. При каждом щелчке кнопкой мыши вкладки Или на экране появляется еще одна вкладка Или. Этот процесс можно повторить и заполнить десяток форм поиска за один раз, но для таких излишеств редко есть разумные основания
Если заполнить первую форму Найти так, что в ней ищутся записи с фамилией "Gorfinkel", и вторую форму поиска с именем "Jehosophat", в ваши результаты будут включены все записи с фамилией Gorfinkel и все записи с именем Jehosophat. Но если оба эти условия отбора поместить на одну форму поиска, будут отобраны только записи о людях с именем и фамилией Jehosophat Gorfinkel.
6. Щелкните правой кнопкой мыши пустое место на поверхности формы и выберите команду Применить фильтр (Apply Filter/Sort).
Программа Access переключается в нормальное представление формы и применяет условия фильтрации. В нижней части формы между кнопками переходов и полем поиска
408

появится словосочетание С фильтром (Filtered), сообщающее о том, что отображаются не все записи.
Если вы решили не применять фильтр, закройте форму Найти. Программа Access перейдет к нормальному отображению формы и не будет применять никаких условий отбора.
Подсказка
Для удаления условий отбора, но сохранения их под рукой и применения в дальнейшем, выберите на ленте Главная → Сортировка и фильтр → Применить фильтр. Для повторного применения фильтра позже, щелкните мышью кнопку Применить фильтр еще раз. Access хранит самые последние заданные условия отбора вместе с формой, поэтому они всегда доступны.
Сохранение фильтров для дальнейшего использования
Одно из ограничений применения фильтров в формах заключается в том, что программа Access помнит только последний набор условий отбора. Если вы подготовили сложное выражение для фильтрации, которое хотите использовать в дальнейшем, подобное ограничение становится проблемой. Как только вы примените другое условие отбора, плоды вашей напряженной работы будут потеряны.
К счастью, эту проблему можно решить несколькими способами. С одной стороны, можно создать полностью новый запрос, выполняющий фильтрацию, и применить его при создании совершенно новой формы. Этот способ хорош, если вы хотите использовать ваши условия отбора для решения конкретной задачи и настроить способ функционирования формы и вывода в нее данных.
С другой стороны, если вы не планируете применять заданные условия отбора слишком часто, но хотите иметь их под рукой, когда они понадобятся в следующий раз (или если нужно хранить десятки разных условий отбора и при этом вы не хотите иметь десятки почти одинаковых форм), есть лучший выбор. Можно сохранить в вашей БД условия отбора фильтра как запрос. В дальнейшем, когда вы захотите вернуться к ним, вы сможете загрузить их и применить в вашей форме.
Далее описано, как реализовать этот прием.
1.Примените ваши фильтры.
Используйте любой из методов, описанных в разд. "Фильтрация в форме"ранее в этой главе.
2.Выберите на ленте Главная → Сортировка и фильтр → Дополнительно → Расширенный фильтр (Home → Sort & Filter → Advanced → Advanced Filter/Sort).
Это действие открывает на экране окно запроса. Данный запрос использует тот же источник данных (таблицу или запрос), что и ваша форма, и применяет ваши условия отбора с помощью поля Условие отбора, расположенного под соответствующим полем. Вам не нужно вносить никакие изменения в окне запроса, поскольку программа Access автоматически заполняет поле (или поля) Условие отбора на основании текущих условий фильтрации.
3.Выберите на ленте Главная → Сортировка и фильтр → Дополнительно → Сохранить как запрос (Home → Sort & Filter → Advanced → Save as Query). Задайте имя запроса и нажмите кнопку ОК.
409

Несмотря на то, что этот запрос можно использовать как обычный, вряд ли вы захотите это делать. Для того чтобы не возникало путаницы, примените другой тип имени, например, CustomerBrowser_FiIter (фильтр обозревателя клиентов), ясно указывающий на то, что данный запрос применяется для фильтрации формы.
В следующий раз, когда захотите снова воспользоваться условиями отбора и применить их еще раз, откройте форму и выполните следующие действия.
1.Выберите на ленте Главная → Сортировка и фильтр → Дополнительно → Расширенный
фильтр.
Этот шаг открывает окно запроса.
2.Выберите на ленте Главная → Сортировка и фильтр → Дополнительно → Загрузить из запроса (Home → Sort & Filter → Advanced → Load From Query).
Программа Access отобразит все запросы, использующие ту же таблицу и не содержащие операций объединения.
3.Выберите запрос с условиями фильтрации, созданный ранее, и щелкните мышью кнопку ОК.
В окне запроса появятся условия отбора из этого запроса.
4.Щелкните правой кнопкой мыши на свободном месте в окне запроса и выберите команду Применить фильтр (Apply Filter/Sort) для применения заданных условий отбора.
Подсказка
Этот прием можно использовать для применения одних и тех же условий отбора в разных формах, при наличии в них полей, по которым вы хотите фильтровать записи. (Можно воспользоваться условиями отбора, созданными для формы CustomerBrowser в другой форме, отображающей клиентов, но не в форме, которая выводит товары.)
Создание улучшенных макетов
Все формы, созданные вами до настоящего момента, были похожи друг на друга. Все поля находятся в одной или нескольких колонках с компактно расположенными данными. Во многих случаях это верстка очень хороша. Но иногда хочется разрешить своему творческому его вырваться наружу и начать действовать.
Вы сталкивались с подобной ситуацией в отчетах, описанных в главе 11. Как только вы освобождаете отчет от внутреннего табличного макета, можно создавать распечатки, более похожие на каталоги товаров розничной продажи, чем на однообразную таблицу данных. Этот же принцип действует и в формах — как только вы решите оставить незатейливый мир простых форм, вы сможете создавать гораздо более оригинальные формы. Можно применять пустое пространство для разделения плотных групп данных; создавать формы с графическим оформлением в виде изображений, линий и прямоугольников; размещать информацию более плотно или более свободно; проектировать формы, напоминающие бумажные документы и т. д.
Высвобождение элементов управления из макета
Как и в отчетах, в формах применяется полезное средство, именуемое макетом. Это форматируемый контейнер, который программа Access использует за кадром для компоновки
410