Сортировать данные в форме access. Сортировка данных

Отчет Access, который вы сконструировали в двух предыдущих упражнениях, имеет еще один существенный недостаток. Фамилии людей из списка Контакты выводятся не по алфавиту. Мастер отчетов автоматически сгруппировал данные таблицы Список по их принадлежности к тем или иным записям таблицы Контакты, которая определяется связью между полями Код_Контакты этих двух таблиц. По указанной причине фамилии в отчете упорядочены по возрастанию числового параметра Код_Контакты - идентификатора записей таблицы Контакты. Это неудобно, в отчетах с большим числом записей при такой сортировке будет довольно трудно отыскать нужного человека. Есть смысл изменить порядок сортировки, для этого выполните следующие шаги.

1.Щелкните на кнопке Отчеты окна базы данных Access.

2. Выделите значок отчета Список контактов.

3. Щелчком на кнопке Конструктор панели инструментов окна базы данных откройте отчет в режиме конструктора.

4. Щелкните на кнопке Сортировка и группировка панели инструментов, чтобы открыть окно диалога, показанное на рис. 18.19.

Рис. 18.19. Сортировка и группировка данных в отчете Access

В этом окне назначены два уровня сортировки. Сначала в порядке возрастания по полю Код_Контакты, а затем в пределах списка контактов, относящихся к одному человеку, по возрастанию даты контакта. На кнопке строки Код_Контакты виден значок, указывающий на то, что записи группируются по данному полю, то есть при перебаре записей таблицы Контакты для каждого нового значения поля Код_Контакты генерируется заголовок группы, в котором, как вы должны помнить из предыдущего упражнения, выводятся имя, фамилия и другие характеристики людей.

Казалось бы, можно просто изменить поле сортировки Код_Контакты на Фамилия, и записи в отчете сразу же выстроятся по алфавиту. Но в этом случае для четырех людей с одинаковой фамилией Петров будет выведен только один заголовок группы, ниже которого разместится список контактов со всеми Петровыми. Вспомните, что новый заголовок группы выводится только для каждого нового значения поля, по которому выполняется группировка. Код_Контакты - уникальный идентификатор записей таблицы Контакты, группировка по которому обеспечивает вывод в отчет всех записей этой таблицы. Для сортировки записей по алфавиту фамилий и имен следует добавить в список окна диалога Сортировка и группировка соответствующие поля, разместив их выше поля группировки Код_Контакты.

5. Щелкните в третьей строке на кнопке раскрывающегося списка Поле/выражение .

6. Выберите пункт Фамилия.

7. В раскрывающемся списке Поле/выражение четвертой строки окна Сортировка и группировка выберите пункт Имя .

Примечание При добавлении нового поля сортировки Access автоматически назначает ему порядок сортировки По возрастанию. Чтобы реализовать обратный порядок записей, выберите в раскрывающемся списке ячейки Порядок сортировки соответствующей строки пункт По убыванию .

8. Щелчком на кнопке строки Фамилия выделите ее.

9. Поместите указатель на кнопку строки Фамилия, нажмите кнопку мыши и перетащите строку на самый верх списка. Отпустите кнопку мыши в тот момент, когда жирная горизонтальная линия, показывающая будущее расположение перемещаемой строки, окажется над первой строкой таблицы.

10. Повторяя шаги 8 и 9, разместите строку Имя между строками Фамилия и Код_Контакты, как показано на рис. 18.20.

Рис. 18.20. Добавление полей сортировки данных в отчете Access

11. Закройте окно Сортировка и группировка.

Примечание Заголовки тех групп, для которых нет ни одной записи в таблице Список, в отчет не выводятся.

12. Щелкните на кнопке Вид панели инструментов , чтобы вывести отчет в режиме предварительного просмотра.

Теперь записи сначала сортируются по фамилиям, затем по именам. После этого для каждой новой записи таблицы Контакты появляется заголовок группы (так как величины поля Код_Контакты для всех записей различны). Ниже каждого такого заголовка из таблицы Список выводятся все контакты, соответствующие данному значению величины Код_Контакты, то есть данному человеку (рис. 18.21).

Рис. 18.21. Окончательный вид отчета Access

13. Закройте отчет Access.

Теперь определим структуру отчета, задавая условия группировки и сортировки записей. Эти условия задаются в диалоговом окне Сортировка и группировка (Sorting and Grouping), которое появляется при нажатии кнопки с таким же названием на панели инструментов.

Чтобы создать группу, нужно задать поле отчета, по которому будут группироваться записи, и установить значения свойств Заголовок группы (Group Header) и Примечание группы (Group Footer) равными Да (Yes). Первый уровень группировки в нашем примере будет определяться полем "Название Клиента " (Company-Name). Выберите это поле из раскрывающегося списка в первой строке окна Сортировка и группировка (Sorting and Grouping). Поле справа в этой строке, определяющее порядок сортировки, будет по умолчанию иметь значение По возрастанию (Ascending). Установите значения свойств Заголовок группы (Group Header) и Примечание группы (Group Footer) в Да (Yes). После этого в области выделения первой строки (в окне) появится символ группировки, а в отчете будут отображены два раздела: Заголовок группы "Название " (CompanyName Header) и Примечание группы "Название " (CompanyName Footer).

Второй уровень группировки будет организован по полю "КодЗаказа " (OrderlD). Заполните аналогичным образом его свойства в окне Сортировка и группировка (Sorting and Grouping).

Кроме того, что мы задали два уровня группировки для нашего отчета, можно еще определить порядок сортировки в пределах самой внутренней группы. В третьей строке окна Сортировка и группировка (Sorting and Grouping) выберите поле "Марка" (ProductName), чтобы отсортировать товары в заказе по алфавиту. После этого отчет примет вид, показанный на рис. 10.19.

Уровень группировки по полю "КодЗаказа" оказался вложенным. И таких уровней вложенности в Access 2002 может быть до 10.

Для каждой группы, кроме свойств Заголовок группы (Group Header) и Примечание группы (Group Footer), которые позволяют вставлять в отчет дополнительные разделы, можно задать еще три свойства: Группировка (Group On), Интервал (Group Interval) и Не разрывать (Keep Together).

Свойства Группировка (Group On) и Интервал (Group Interval) связаны между собой и в совокупности определяют, каким образом мы хотим группировать данные. Значения, которые может принимать свойство Группировка (Group On), зависят от типа данных группирующего поля. Обычно данные группируются по каждому значению поля, т. е. каждому значению поля должна соответствовать отдельная группа. Тогда свойство Группировка По полному значению (Each Value), а значение свойства Интервал (Group Interval) должно быть равным 1. В нашем примере для поля "Название" установите эти свойства именно так.

При группировке по полю с текстовым содержимым допускается начинать новую группу всякий раз, когда изменится первый или несколько первых символов значения поля. В этом случае свойство Группировка (Group On) должно иметь значение По первым знакам (Prefix Characters), а свойство Интервал (Group Interval) будет определять, сколько первых символов должно использоваться для образования новой группы. Если это значение равно 1, то для каждой буквы алфавита будет создана Сдельная группа - это позволяет создавать отчеты типа Предметного указателя в книгах. Примером такого отчета является отчет "Список товаров " (Alphabetical List of Products) в базе данных "Борей" (Northwind ).

Рис. 10.19 . Структура отчета и условия сортировки и группировки

Для числового поля "КодЗаказа " (OrderID) мы оставляем значение свойства Группировка (Group On) равным По полному значению (Each Value), как это установлено по умолчанию. Значение свойства Интервал (Group Interval) останется равным I, т. к. нам нужно создать отдельную группу для каждого заказа. Однако свойство Группировка (Group On) позволяет группировать числовые данные и по диапазонам значений. В этом случае нужно установить значение данного свойства равным Интервал (Interval), а значение свойства Интервал (Group Interval) равным числу, которое определяет диапазон группировки. Например, если числовое поле содержит возраст человека, то значение 5 свойства Интервал (Group Interval) будет определять диапазоны возрастов от 0 до 4, от 5 до 9, от 10 до 14 и т. д.

Для поля типа Дата/время свойство Группировка (Group On) кроме значения по умолчанию По полному значению (Each Value) может принимать следующие значения: По годам (Year), По кварталам (Qtr), По месяцам (Month), По неделям (Week), По дням (Day), По часам (Hour), По минутам (Minute). Значение свойства Интервал (Group Interval) определяет число выбранных единиц измерения в диапазоне. Например, если значение свойства Группировка (Group On) установлено равным По месяцам , а Интервал (Group Interval) имеет значение 1, то данные будут группироваться помесячно.

Свойство Не разрывать (Keep Together) позволяет управлять тем, как группа будет, размещаться на странице. Если группы небольшие, то лучше всего установить значение этого свойства равным Вся группа (Whole Group). Тогда при печати отчета вся группа, т. е. заголовок группы, все записи из области данных и примечание группы будут размещаться на одной странице (если вся группа не помещается на текущую страницу, она продолжится со следующей страницы), а каждая следующая группа будет начинаться с новой страницы (если только она не помещается целиком на текущей странице). Если группа может содержать столько данных, что они не поместятся на одной странице, то лучше установить значение этого свойства равным С первыми данными (With First Detail). В этом случае заголовок группы размещается на текущей странице, только если на ней помещается также первая строка данных, в противном случае вся группа переносится на следующую страницу.

Свойство Не разрывать (Keep Together) для группы связано с аналогичным свойством раздела отчета. Эти свойства должны быть согласованы. Например, если в группе установлено значение свойства Не разрывать (Keep Together) равным Вся группа (Whole Group), то значения свойства Не разрывать (Keep Together) соответствующих разделов отчета должны иметь значения равными Да (Yes). В противном случае приоритет имеет свойство, заданное в окне Сортировка и группировка (Sorting and Grouping).

Сам отчет также имеет свойство Неразрывная группа (Grp Keep Together), которое применяется для отчетов, печатающихся в несколько колонок. Оно действует только для групп, у которых значение свойства Не разрывать (Keep Together) установлено равным Вся группа (Whole Group) или С первыми данными (With First Detail). Если же установлено значение Нет (No), то свойство Неразрывная группа (Grp Keep Together) игнорируется. Данное свойство отчета может иметь значения На странице (Per Page) и В столбце (Per Column). В первом случае группа печатается без разрыва на странице, а во втором - без разрыва в колонке (полосе) отчета.

Замечание
В ячейки Поле/выражение (Field/Expression) окна Сортировка и группировка (Sorting and Grouping) можно вводить не только названия полей, но и выражения, т. е. группировка может выполняться по значению выражения. Ввод выражения начинается со знака равенства (=) так же, как в свойствах форм и отчетов
.

Отчеты становятся более понятными и структурированными, если данные в них организованы в группы и подгруппы. Однако структуру отчета можно изменить. Для этого используется диалоговое окно

Чтобы открыть диалоговое окно , откройте отчет в режиме Конструктора и нажмите кнопку Сортировка и группировка на панели инструментов Конструктор отчетов .

Рис. 12.

В этом диалоговом окне можно определить поля или выражения, по которым Access будет группировать данные. Кроме того, сгруппированные данные можно сортировать по возрастанию или по убыванию. Символ на кнопке выделения в левом сером столбце этого диалогового окна указывает на то, что данное поле или выражение (находящееся справа от значка) используется для группировки записей. В данном примере поле «Категория» используется для группировки строк отчета, а сортировка строк в пределах группы выполняется по полю «КодТовара».

Разработка интерфейса приложения

Есть несколько способов организации командного интерфейса приложения. Можно создать специальную строку меню или Главную кнопочную форму, чтобы предоставить пользователю удобное средство выбора действий, которые нужно выполнить в приложении. Команды следует группировать в меню или на страницах кнопочной формы по своему назначению так, чтобы пользователю было интуитивно ясно, где должна находиться определенная команда и в каких случаях следует ее выполнять. Обычно для работы с приложением создают специальную форму, которая носит название Главная кнопочная форма и содержит кнопки, позволяющие выбирать основные функции или подсистемы приложения. Такую форму можно создать, как обычно, с помощью Конструктора форм, а можно использовать специальный мастер, который называется Диспетчер кнопочных форм. В базе данных «Борей» создана Главная кнопочная форма без применения мастера. Давайте посмотрим, как аналогичную форму создать с помощью Диспетчера кнопочных форм.

Выберите команду меню Сервис, Служебные программы, Диспетчер кнопочных форм. Нажмите кнопку Да. Теперь мастером создается таблица «Элементы кнопочной формы» и кнопочная форма.

Рис. 13.

Чтобы создать на ней нужные кнопки, нажмите кнопку Изменить . Открывается диалоговое окно Изменение страницы кнопочной формы , содержащее список элементов формы.

Рис. 14.

В поле Название кнопочной формы мы можем изменить стандартное название, если это необходимо. Чтобы создать первый элемент, нажмите данную кнопку. Появляется диалоговое окно Изменение элемента кнопочной формы. В поле Текст введите наименование создаваемой кнопки, например Товары. Второе поле Команда позволяет определить действие, которое будет» выполняться после нажатия данной кнопки. Количество кнопок на одной странице формы ограничено числом 8. Это не значит, что их нельзя создать больше, просто это придется делать вручную.

Если число действий, которые хотелось бы разместить на кнопки, превышает 8, можно сгруппировать часть действий на отдельной странице кнопочной формы. Для примера давайте создадим еще одну страницу нашей кнопочной формы и разместим на ней кнопки действий с клиентами. Для этого в диалоговом окне нажмите кнопку Создать . В появившемся диалоговом окне введите имя новой страницы Клиенты и нажмите кнопку ОК.

Далее в редакторе страниц уже известным способом создадим элементы: Клиенты, Наклейки для клиентов, Телефоны клиентов, Заказы клиентов, которые открывают соответствующие формы. Не забудьте создать кнопку, которая позволит вернуться в Главную кнопочную форму. Для этого нужно связать с ней команду Перейти к кнопочной форме . Закройте это окно, чтобы вернуться к диалоговому окну . В списке страниц у вас должны появиться две страницы.

Теперь нужно отредактировать первую страницу - добавить к ней элемент, с помощью которого можно будет перейти на вторую страницу. Для этого выделите в списке страницу Главная кнопочная форма и нажмите кнопку Изменить . В окне редактора страниц добавьте новый элемент Клиенты, также используя команду Перейти к кнопочной форме . Теперь обе страницы оказались связанными. Можно закрыть окно мастера и посмотреть, что у нас получилось, открыв форму «Кнопочная форма». Вы можете проверить, как действуют кнопки. Можно перейти в режим Конструктора и оформить внешний вид формы, применив все средства Конструктора. Таким образом, с помощью Диспетчера кнопочных форм можно создать иерархическую систему страниц кнопочной формы, которая может быть альтернативой обычному иерархическому меню.

Другой способ создания интерфейса приложения помимо кнопочной формы, создание меню и дополнение его панелью инструментов. Для этого существует очень удобное средство, которое называется панели команд.

Панели команд - это объекты Microsoft Office, которые обеспечивают стандартный способ организации взаимодействия пользователя с приложением Microsoft Office. Они бывают трех типов:

Строка меню;

Контекстное меню;

Панели инструментов.

В своем приложении вы можете использовать как стандартные панели команд Access, настроив их нужным образом, так и специальные пользовательские панели команд.

Создание и изменение панелей команд любого типа выполняется в режиме настройки, который может быть вызван либо с помощью команды меню Вид, Панели инструментов, Настройка , либо из контекстного меню, которое выводится на экран после щелчка правой кнопкой мыши в области панелей команд приложения.

Откройте окно Настройка , например, щелкнув правой кнопкой мыши по панели инструментов и выбрав команду Настройка . Таким способом осуществляется переход в режим настройки панелей команд. По умолчанию открывается вкладка Панели инструментов . Если у вас открылась другая вкладка, раскройте именно эту вкладку. Пока в списке на этой вкладке отображаются только стандартные панели команд. К этому списку нужно добавить новую панель команд типа Строка меню . Нажмите кнопку Создать . В диалоговом окне, запрашивающем имя создаваемой панели команд, введите название: Главное меню и нажмите кнопку ОК. Появится маленькая пустая панель, которая по умолчанию является панелью инструментов. Чтобы превратить ее в строку меню, необходимо изменить ее тип. Для этого выделите элемент Главное меню в списке на вкладке Панели инструментов и нажмите кнопку Свойства . Откроется диалоговое окно Свойства панели инструментов Properties . В раскрывающемся списке тип выберите значение Строка меню .

Кроме типа, для данной панели команд можно задать еще ряд свойств:

Закрепление. Можно задать расположение панели команд на экране: в любом месте, только по горизонтали, только по вертикали или вообще запретить его изменять.

Отображение в меню. Установите этот флажок, если вы хотите, чтобы название этой панели команд отображалось в списке, появляющемся при выполнении команды меню Вид, Панели инструментов (View, Toolbars).

Настройка. Сброс этого флажка запретит изменение данной панели команд.

Изменение размера. Если этот флажок не установлен, изменение размеров данной панели команд будет не возможно.

Перемещение. Сбросьте этот флажок, если нужно запретить перемещение панели команд по экрану.

? отображение и скрытие . Когда этот флажок сброшен, пользователь не будет иметь возможности скрывать и снова отображать панель команд на экране.

Пока наша строка меню пустая. Теперь в нее можно добавить меню - списки команд, раскрывающиеся при выборе меню в строке меню или на панели инструментов. Чтобы добавить меню на панель команд:

· Раскройте вкладку Команды в диалоговом окне Настройка.

· Перетащите элемент Новое меню из списка Команды на новую панель.

· Теперь вы увидите на ней элемент Новое меню.

Изменить название созданного меню можно в окне свойств. Для этого необходимо щелкнуть правой кнопкой мыши по меню и выбрать в контекстном меню команду Свойства . Появится диалоговое окно Свойства элемента Главное меню . В этом окне можно задать следующие значения:

В поле подпись введите название меню: Клиенты.

В поле всплывающее сообщение можно ввести текст всплывающей подсказки.

Поле действие следует оставить пустым. Обычно оно определяет действие, выполняемое при выборе данного элемента панели команд. При выборе меню Клиенты должен раскрываться список команд данного меню. Это будет выполняться автоматически, т.к. в качестве элемента строки меню мы добавили меню.

Поле стиль позволяет определить вид элемента панели команд, в данном случае - меню. Раскрывающийся список имеет следующие значения:

ь По умолчанию - на элементе меню выводятся одновременно значок и надпись;

ь Только текст (всегда) - и на элементе меню и на кнопке выводится только надпись;

ь Только текст (в меню) - выводится надпись на элементе меню и значок на кнопке;

ь Рисунок и текст - и на элементе меню и на кнопке выводится как значок, так и надпись.

Два поля - файл справки и идентификатор справки - позволяют связать с данным элементом панели команд раздел из справочной системы приложения, который будет отображаться при нажатии клавиши , если данный элемент выделен.

Поле параметр связано с полем действие и определяет значение аргумента функции, если в поле действие определен вызов функции. В данном случае оно тоже остается пустым.

В поле дополнительные сведения можно ввести информацию, которая может быть доступна из процедуры VBA.

Установленный флажок Создать группу означает, что данный элемент панели команд является началом группы и слева от него (в этом случае в строке меню) будет отображаться разделительная линия.

Закройте окно Свойства элемента меню и будем добавлять в меню команды. Для этого можно использовать ту же вкладку Команды диалогового окна Настройка . Выбрав категорию, а затем команду из выбранной категории, можно перетащить ее в данное меню. Например:

Перетащите в меню те формы, которые мы использовали при создании кнопочной формы в предыдущем разделе: «Клиенты», «Наклейки для клиентов», «Телефоны клиентов», «Заказы клиентов».

Чтобы добавить в строку меню следующее меню со списком команд, нужно снова выбрать на вкладке Команды диалогового окна Настройка категорию Новое меню , затем элемент Новое меню и перетащить его в данное меню, поместив его справа от первого элемента. Чтобы изменить вид меню или подменю, щелкните по соответствующему элементу правой кнопкой мыши. Можно использовать команды появившегося при этом контекстного меню или открыть окно Свойства элемента .

Удаление меню выполняется очень просто. Достаточно в режиме настройки панелей команд перетащить соответствующий элемент в пустую область окна Microsoft Access. Аналогично можно перетаскивать подменю и команды меню из одних меню в другие, также можно команду меню превратить в кнопку на панели инструментов и наоборот. Поскольку меню и панели инструментов являются разными типами одного объекта - панели команд, на панели инструментов можно размещать меню, а в строку меню можно добавлять кнопки.

Чтобы окончательно придать меню профессиональный вид (как в стандартном меню Access), необходимо каждому меню и команде меню назначить клавиши доступа. Буквы, соответствующие этим клавишам, выделяются в названии элемента подчеркиванием. Клавиши доступа используются следующим образом. Для того чтобы раскрыть меню, нужно при нажатой клавише нажать клавишу, соответствующую подчеркнутой букве в названии этого меню. Например, комбинация клавиш + «Ф» (+) раскрывает меню Файл (File). Далее, чтобы выбрать команду меню, достаточно просто нажать клавишу, соответствующую подчеркнутой букве в названии команды.

Чтобы указать символ, который будет определять клавишу доступа, нужно в имени команды (в поле подпись окна свойств элемента меню) вставить перед этим символом знак &, например «&Товары». При этом в разных командах одного меню должны быть использованы обязательно разные символы, определяющие клавиши доступа, хотя в разных меню символы могут совпадать.

Для того чтобы обеспечить быстрый доступ к наиболее часто используемым формам, отчетам или макросам, можно создать специальные кнопки, которые помещаются либо на панель инструментов, либо непосредственно в меню. Создать эти кнопки очень просто:

Закройте окно Настройка.

Раскройте список форм в окне базы данных приложения «Борей», выделите форму «Товары» и перетащите ее в строку меню, которое мы только что создали. В строке меню появится кнопка со значком и названием формы, при нажатии которой открывается форма «Товары».

Как видите, в одной строке меню могут размещаться как подчиненные меню, так и кнопки. Точно так же можно добавить кнопку в одну из стандартных панелей инструментов. Если таких кнопок, которые нужно создать для вызова различных функций приложения, много, лучше создать отдельную панель инструментов, в которую включить все эти кнопки, а также полезные кнопки со стандартных панелей инструментов.

Создается пользовательская панель инструментов аналогично строкам меню:

Снова откройте окно Настройка, щелкнув правой кнопкой мыши в области панелей команд окна приложения.

В появившемся диалоговом окне раскройте вкладку Панели инструментов.

Нажмите кнопку Создать.

В появившемся диалоговом окне введите имя новой панели инструментов Мои макросы и нажмите кнопку ОК. Появится пустая панель инструментов.

В данном случае не нужно менять ее тип (по умолчанию создается именно панель инструментов), раскройте вкладку Команды.

Перетащите этот макрос с помощью мыши на пустую панель инструментов.

Вы можете изменить внешний вид данной кнопки. Для этого в диалоговом окне Настройка нажмите кнопку Изменить выделенный объект или щелкните правой кнопкой мыши по только что созданной кнопке. Отобразится контекстное меню. При этом режим отображения кнопки помечен как Значок и текст . Но можно поместить на кнопке только значок, или только текст. Если вы хотите изменить текст на кнопке, введите этот текст в поле Имя (по умолчанию в этом поле отображается имя макроса).

Вы можете поместить на кнопку другой значок, выбрав понравившуюся картинку на специальной панели. Для отображения набора стандартных значков выделите в контекстном меню команду Выбрать значок для кнопки и щелкните по понравившемуся значку. Если же ни одна из картинок не подходит, можно выбрать наиболее близкий по оформлению значок, а потом исправить его в специальном редакторе. Чтобы открыть окно Редактор кнопок , выберите в контекстном меню команду Изменить значок на кнопке .

Наконец, можно просто скопировать понравившийся вам значок с другой кнопки. Чтобы скопировать значок с одной кнопки на другую:

Откройте диалоговое окно Настройка и выделите ту кнопку на панели инструментов, с которой нужно скопировать значок.

Выберите в контекстном меню команду Копировать значок на кнопке.

Выделите кнопку, значок которой нужно изменить.

Нажмите кнопку Изменить выделенный объект в диалоговом окне Настройка.

Выберите в контекстном меню команду Вставить значок для кнопки .

С помощью диалогового окна свойств кнопки можно изменить текст всплывающей подсказки и задать клавиши быстрого вызова.

Чтобы изменить текст всплывающей подсказки для кнопки на панели инструментов:

В режиме настройки выделите кнопку на панели инструментов. В диалоговом окне Настройка нажмите кнопку Изменить выделенный объект.

Выберите в контекстном меню команду Свойства. Появится диалоговое окно свойств кнопки.

Введите желаемый текст в поле Всплывающая подсказка .

На созданной вами панели инструментов можно разместить любые другие. полезные кнопки, не только кнопки для запуска макросов. Когда создание панели инструментов закончено, вы можете переместить ее на свободное место в верхней части экрана (или поместить у любой другой границы экрана).

Очень важно обеспечить приложение удобным интерфейсом. Access позволяет снабдить базу данных всеми необходимыми элементами интерфейса - меню и панелями инструментов, формами для ввода данных, комбинациями клавиш для быстрого вызова макросов и т.д. Все это делает работу с базой данных удобной и придает приложению законченный вид.

GardenCo

Сортировка данных

Информация в таблицах может быть отсортирована в порядке убывания или возрастания по одному или нескольким полям. Например, можно отсортировать таблицу клиентов по алфавиту, воспользовавшись фамилией в качестве первого поля сортировки и именем - в качестве второго. Получится список, подобный тому, который встречается в телефонных справочниках.

В некоторых случаях сортировка применяется для того, чтобы сгруппировать табличные данные по определенному принципу. Например, если, прежде чем печатать почтовые наклейки, отсортировать адресную информацию по почтовому индексу, наклейки будут сгруппированы в соответствии с требованиями почтовой службы.

В этом упражнении вы воспользуетесь различными способами сортировки данных в таблице и форме. В качестве рабочей будет использоваться папка Office XP SBS\Access\Chap12\Sort . Выполните следующие шаги.

1. Откройте базу данных GardenCo, расположенную в рабочей папке.

2. Откройте таблицу Клиенты в режиме таблицы.

3. Чтобы отсортировать таблицу по полю Штат, щелкните в любом месте столбца Штат, а затем щелкните на кнопке . Записи будут упорядочены по регионам.

Совет . Можно также воспользоваться командами Сортировка по возрастанию (Sort Ascending) и в меню Записи (Records) или щелкнуть правой кнопкой мыши на столбце, а затем щелкнуть на нужной команде в контекстном меню.

4. Чтобы изменить порядок сортировки на обратный (при условии, что курсор все еще находится в столбце Штат ), щелкните на кнопке Сортировка по убыванию (Sort Descending) . Записи для штата Орегон находятся теперь в начале списка. В обоих случаях сортировка осуществлялась по алфавиту, но данные в поле Город располагаются беспорядочно. Очевидно, что список выиграет, если упорядочить города внутри регионов.

Хотя суть сортировки кажется вполне очевидной, для компьютера все не так просто. В Access цифровые данные могут трактоваться и как числа, и как текст. Поля, содержащие, помимо цифр, пробелы, тире или знаки препинания (как, например, в почтовом индексе или телефонных номерах), трактуются как текстовые. В отличие от них поля, содержащие такие данные, как цена или количество, считаются числовыми. При сортировке текстовых полей, все записи упорядочиваются вначале по первому символу, затем по второму и так далее - вплоть до последнего. Сортировка числовых данных осуществляется по их значениям в порядке возрастания или убывания. Такой подход может привести к неожиданным результатам. В следующей таблице представлены результаты сортировки первого столбца в зависимости от того, является его содержимое текстовым или числовым.

Чтобы отсортировать текстовое поле, содержащее цифры, в порядке возрастания или убывания значений, нужно дополнить их ведущими нулями до одинаковой длины. Например, данные 001, 011, 101 будут отсортированы правильно, даже если они определены как текстовые.

Совет . При сортировке записей по нескольким полям сортировка осуществляется последовательно, слева направо. Поэтому поля сортировки должны быть смежными и располагаться в нужной последовательности.

5. Чтобы разместить столбец Штат слева от поля Город , щелкните на заголовке столбца и перетащите его влево, пока между полями Адрес и Город не появится темная линия.

6. Так как столбец Штат уже выделен, нажмите на клавишу (Shift) и щелкните в заголовке столбца Город , чтобы распространить выделение на оба столбца.

7. Щелкните на кнопке Сортировка по возрастанию (Sort Ascending) , чтобы упорядочить записи по регионам и городам в порядке возрастания (города будут отсортированы внутри регионов).

Совет . Просматривая записи в режиме формы, их можно отсортировать, но только по одному полю. Для этого щелкните в нужном поле, а затем щелкните на одной из кнопок Сортировка (Sort) .

8. Хотя порядок столбцов в таблице Клиенты не имеет особого значения, все же верните столбец Штат на прежнее место.

9. Сохраните и закройте таблицу Клиенты .

10. Закройте базу данных.

Строки в таблице можно отсортировать согласно содержимому одного или нескольких столбцов. Для этого выберите поле, по которому будет осуществляться сортировка, и нажмите кнопку Сортировка по возрастанию или Сортировка по убыванию на панели инструментов.

При поиске некоторого значения Access находит и отображает соответствующую запись Но если заданному критерию удовлетворяет несколько записей, то для удобства работы возникает необходимость отобразить на экране только их С помощью кнопок сортировки и фильтрации, находящихся на панели инструментов (или команд Фильтр (Filter) и Сортировка (Sort) из меню Записи (Records)), можно отобразить на экране только необходимые для работы записи, а также быстро отсортировать их в нужном порядке Для сортировки всей таблицы используются две кнопки сортировки, а для выбора определенных записей - три кнопки фильтрации

Быстрая сортировка

Иногда необходимо отсортировать записи в определенной последовательности Кнопки сортировки панели инструментов позволяют сортировать столбцы по возрастанию или по убыванию Сначала выберите поля для сортировки, а затем щелкните на кнопке Сортировка по возрастанию (А-Я) (Sort Ascending (A-Z)) или Сортировка по убыванию (Я-А) (Sort Descending (Z-A))

Для выбора поля сортировки достаточно поместить в него курсор на уровне любой записи После этого щелкните на соответствующей кнопке, и данные мгновенно будут отсортированы

Если вы хотите сортировать данные по нескольким полям, выделите несколько столбцов Для этого сначала выделите один столбец, а затем нажмите клавишу и перетащите курсор (Таким образом выделяются смежные столбцы) При этом записи таблицы отсортируются сначала по первому столбцу, затем по второму и т д Если же нужно выделить несмежные столбцы, то, как уже упоминалось выше, их нужно переместить, чтобы они располагались рядом

Чтобы восстановить первоначальный порядок расположения записей, воспользуйтесь командой Записи^Удалить фильтр (Records^Remove Filter/Sort)

Фильтрация

Фильтрация позволяет просмотреть в форме только определенные записи. Выберите данные, по которым следует провести отбор, и нажмите кнопку Фильтр по выделенному на панели инструментов. Для того, чтобы поправить фильтр, нажмите кнопку Изменить фильтр. Чтобы задать более подробное условие для фильтрации, выберите в меню Записи команду Фильтр и подкоманду Расширенный фильтр. Для применения обычного или расширенного фильтра, нажмите кнопку Применить фильтр на панели инструментов.

5. Создание запросов в среде ms Access

Процесса проектирования запроса с помощью стандартной панели инструментов окна запроса в режиме Конструктора .

Запросы

Запросы обеспечивают быстрый и эффективный доступ к данным, хранящимся в таблице.

При создании таблицы с помощью MS Access можно заметить, что программа не разрешает использовать вычисляемые поля. Не существует также возможности выполнить сортировку не по первичному ключу.

Благодаря запросам, можно выполнить сортировку или вычислить выражения. Например, свести вместе данные из связанных таблиц.

При выполнении запроса MS Access считывает данные из таблиц и отображает результат выполнения в режиме таблицы. При этом следует учитывать, что результат выполнения запроса не сохраняется. Данные всегда хранятся в таблицах. В запросе MS Access хранит только инструкции о том, как должны быть организованы данные в результате выполнения запроса.

Для некоторых запросов можно внести изменения в результат запроса, отображаемый в режиме таблицы. Эти изменения отразятся и в исходных таблицах. На основании запроса можно разработать форму или отчет.

Сортировка записей таблицы

В таблице данные всегда отсортированы по первичному ключу. Чтобы организовать другой способ сортировки данных, используется запрос. Для создания такого запроса в окне базы данных следует выбрать пиктограммуТАБЛИЦА” и указать таблицу, которую необходимо отсортировать. Выбор пиктограммыНОВЫЙ ЗАПРОС”, расположенной на панели инструментов, приводит к открытию диалогового окна для создания нового запроса для указанной в окне базы данных таблице. В результате выбора пиктограммыНОВЫЙ ЗАПРОС” в диалоговом окне отображается список всех имен полей исходной таблицы, в начале которого расположен символ " * ". Отбуксируйте звездочку в бланк запроса QBE. Она является символом-заменителем всех полей данных. Кроме того, отбуксируйте в бланк запроса то поле данных, по которому должна быть проведена сортировка.

Для этого поля из списка "Сортировка" выберите способ сортировки. Выберите пиктограмму “ВЫПОЛНИТЬ”и MS Access отобразит на экране результат запроса, отображаемый в режиме таблицы, данные в котором отсортированы требуемым образом.

Запросы с критериями поиска

Для выборки данных из таблиц по определенному условию в MS Access используются запросы с критериями поиска. Предварительно задав условие отбора, результатом выполнения запроса будет набор данных удовлетворяющих сформированному критерию.

Для составления запроса следует перейти в окно базы данных, выбрать пиктограмму “ЗАПРОС” и нажать кнопку "Создать", а затем кнопку "Новый запрос". В следующем окне диалога следует выбрать одну из таблиц БД и нажать кнопку "Добавить", MS Access поместит в окно запроса список полей указанной таблицы. Теперь можно выбрать одно или несколько полей и отбуксировать их в бланк запроса QBE.

Встроке"Условие отбора" можно ввести теперь критерии выбора. Для обозначения произвольного количества символов используйте в качестве символа-заменителя звездочку (*), а для обозначения одного произвольного символа знак вопроса (?). Сформулируйте критерии запроса. Например, если для текстового поля будет задан только критерий "А*", то в результате выполнения запроса будут отображены только те записи, текстовое поле которых начинается с буквы "А" (или "а").

Если требуется отыскать комбинацию нескольких значений, необходимо ввести их в строку "Условие отбора", употребляя в качестве разделителя логические операторы AND и OR. Кроме обычных операторов сравнения, MS Access предоставляет три специальных оператора, полезных для отбора данных: BETWEEN, IN, LIKE.

Запросы с параметрами

Не всегда можно решить на этапе создания запроса, какие именно значения должен отыскивать MS Access, а иногда требуется гибкое условие отбора, которое может изменяться в зависимости от текущей ситуации. Поэтому вместо условия отбора, непосредственно вводимого в бланк QBE, можно включить в запрос параметр, и в этом случае перед выполнением запроса MS Access каждый раз будет запрашивать конкретные условия отбора.

Чтобы установить параметр необходимо ввести в строку "Условие отбора" имя или фразу, заключенную в квадратные скобки (). То, что заключено внутри квадратных скобок, MS Access рассматривает как имя параметра. Это имя выводится в диалоговом окне при выполнении запроса, поэтому разумно в качестве имени параметра использовать содержательную фразу. В одном запросе можно задать несколько параметров; при этом имя каждого параметра должно быть уникальным и информативным.

По умолчанию MS Access преобразует введенные в запрос параметры в текстовый тип данных. Однако, так как текстовые поля нельзя сравнивать с полями дат, тип данных для параметров необходимо установить точно. Для этого выберите команду Запрос/Параметры из меню, в результате чего MS Access откроет окно диалога "Параметры запроса". Введите параметр без квадратных скобок в диалоговое окно и выберите необходимый тип данных.

Теперь для выполнения запроса сначала необходимо ввести значение параметра, а результат запроса будет содержать только те поля, которые удовлетворяют заданному значению параметра.

Вычисляемые поля в запросах

Существует возможность задания вычисления над любыми полями таблицы и сделать вычисляемое значение новым полем в наборе записей. Для этого используется множество встроенных в MS Access функций. Можно создать поле в запросе с использованием арифметических операций над полями таблиц, а можно также создать новое поле как результат конкатенации текстовых полей или символьных констант.

Создание вычисляемого поля осуществляется путем простого ввода выражения для вычисления в пустом столбце бланка запроса QBE. Необходимо всего лишь составить соответствующий запрос с использованием имен полей. После того как ввод будет завершен, выражение будет иметь следующий вид:

Выражение 1: [Поле1] “оператор” [Поле2]

В квадратные скобки заключаются только имена полей. MS Access автоматически использует "Выражение 1" в качестве имени вычисленного выражения. Это имя можно изменить на более содержательное.

При построении сложных выражений MS Access предлагает использовать утилиту, называемую “Построитель выражений”. Для перехода в “Построитель выражений” необходимо щелкнуть по пустому полю в бланке QBE, а затем – по кнопке “Построить” панели инструментов.

Итоговые запросы

Итоговые запросы значительно отличаются от обычных. В них можно использовать два типа полей. Существуют поля, по которым осуществляется группировка данных, и поля, для которых проводятся вычисления. Дополнительно можно включить еще поля для определения условий запроса.

Для того чтобы составить итоговый запрос, находясь в режиме Конструктора запроса , следует выбрать пиктограмму “ГРУППОВЫЕ ОПЕРАЦИИ” или воспользоваться командой Вид/Групповые операции . В результате чего в бланке запроса появится строка "Групповая операция". Затем для соответствующего поля из списка необходимо выбрать функцию "Группировка".

Многотабличные запросы

Рассмотрев возможности запросов, основанных на одной таблице, легко организовать просмотр объединенных данных из нескольких связанных таблиц. Выбор данных из нескольких таблиц особенно полезно использовать при создании форм и отчетов.

Во-первых откройте окно Конструктора запроса и добавьте таблицы, в которых содержится необходимая информация. Если ранее с помощью команды Связи была установлена связь между таблицами, то MS Access определит это автоматически. Эта связь будет отображена в виде линии, проведенной между полями таблиц. Если связь между таблицами отсутствует, вы должны ее установить.

Далее необходимо определить параметры связи. Укажите на соединительную линию и выберите команду Вид/Параметры объединения . В результате откроется диалоговое окно, в котором предлагаются три опции для определения параметров связи.

После этого отбуксируйте в бланк запроса, поля из главной и подчиненной таблицы. Как правило, имеется больше записей, содержащих сведения о объектах, чем записей об их категориях. Поэтому MS Access отображает категорию столько раз, сколько это необходимо. Следовательно, если одной категории соответствует десять различных объектов, категория будет повторена десять раз.

Примечание: Поля главной таблицы при отношении “один-ко-многим” нельзя изменить в результате запроса, отображаемого в режиме таблицы. Кроме того, эти поля могут содержать повторяющиеся значения.

Любые запросы-выбора могут быть преобразованы в запросы создания таблицы. В этом случае создается таблица, которая содержит результат запроса, полученный в данный момент.

Перекрестные запросы

MS Access поддерживает специальный тип итоговых запросов, называемый перекрестным запросом. Такой запрос позволяет увидеть вычисляемые значения в виде перекрестной таблицы, напоминающей электронную таблицу.

Представьте себе таблицу товаров, которая содержит три поля данных: "Тип", "Поставщик" и "Цена". Для каждой категории товаров требуется определить суммы цен товаров с указанием поставщика.

Поместите в окно Конструктора запроса таблицу "Товары". Затем включите строку "Групповая операция", выбрав команду Вид/Групповые операции . После этого отбуксируйте поле данных"Тип" в бланк запроса. Для этого поля выберите из списка значение "Группировка".

Во второй столбец бланка запроса отбуксируйте поле данных "Поставщик". Для этого столбца также выберите значение "Группировка".

Последним в бланк запроса отбуксируйте поле "Цена". Для этого поля выберите значение "Sum".

При выполнении запроса его результат отображается в режиме таблицы, в первом столбце которой будут все типы товаров, во втором – для каждого типа будут приведены номера поставщиков, а в последнем столбце – суммы цен товара данного типа и данного поставщика.

Теперь необходимо итоговый запрос преобразовать в перекрестный запрос. Для этого выберите команду Запрос/Перекрестный .

Выбор данной команды приводит к замене в бланке запроса строки "Вывод на экран" на новую строку "Перекрестная таблица". Все остальные параметры остаются без изменения. Поле "Тип" исходной таблицы будет использовано в качестве заголовка строк. Поэтому из поля списка "Перекрестная таблица" выберите элемент "Заголовок строк". Для столбца "Поставщик" выберите из списка "Перекрестная таблица" элемент "Заголовок столбцов".

Сумму цен товаров необходимо поместить в ячейках перекрестной таблицы. Поэтому для этого поля из списка "Перекрестная таблица" следует выбрать элемент "Значение".

При выполнении запроса его результат отображается в режиме таблицы, в которой номера категорий служат в качестве заголовков строк. Кроме этого, для каждого поставщика сумма цен товаров в перекрестной таблице размещена в отдельном столбце.

Примечание: При создании перекрестной таблицы вы можете выбрать только одно поле в качестве содержимого таблицы и только одно поле в качестве заголовка столбцов. В качестве заголовков строк можно указать и несколько полей исходной таблицы.

Запросы на удаление

Все выше перечисленные запросы относятся к запросам-выбора, которые позволяют только выбирать и просматривать данные из таблиц. Следующие запросы являются запросами-действия, позволяющие модифицировать хранимую информацию.

С помощью запроса на удаление осуществляется удаление определенных данных из таблиц. Прежде чем сконструировать запрос на удаление, следует подумать, какие записи необходимо удалить. Самым надежным методом является предварительное создание запроса-выбора.

В режиме Конструктора запроса выберите таблицу, в которой позднее будет проводиться удаление. Затем определите критерии и посмотрите результат выполнения запроса, отображаемый в режиме таблицы. Быстрое переключение между режимами конструктора и выполнения обычно осуществляется с помощью одноименных пиктограмм, расположенных на панели инструментов.

Лишь в том случае, если в результате запроса присутствуют только подлежащие удалению записи, следует преобразовать запрос-выбора в запрос на удаление.

Для этого в строке меню выберите команду Запрос/Удаление . После этого MS Access выключает в бланке запроса строки "Сортировка"и"Вывод на экран". Для запросов на удаление эти строки не нужны. Кроме того, для всех колонок бланка запроса в новой строке"Удаление" отображается текст "Условие". Однако критерии при этом не изменяются.

Если выполнить запрос выбором пиктограммы “ВЫПОЛНИТЬ”, MS Access не отобразит на экране результат выполнения запроса. Вместо него появится сообщение о том, сколько записей будет удалено в исходной таблице. Вы можете прервать процесс удаления нажатием кнопки "Отмена". Однако нажатие OK приводит к безвозвратному удалению записей, удовлетворяющих критериям запроса.

Запросы-обновления

Запрос-обновления позволяет производить обновление некоторой хранимой информации, своевременность которой истекла на текущий момент.

Сначала создайте новый запрос выбора и введите критерии для выбора изменяемых записей. Только в том случае, если результат запроса отвечает заданным требованиям, следует преобразовать его в запрос замены. Для этого выберите команду Запрос/Обновление . При этом будут выключены строки "Вывод на экран"и "Сортировка" в бланке запроса. Обе эти строки не нужны для запроса замены. Вместо них включается новая строка "Обновление". В эту строку следует ввести новые выражения для заменяемых записей. Обратите внимание, что тип данных выражения должен совпадать с типом данных поля исходной таблицы.