![]() |
Группировка по выражению
Здравствуйте, нужна помощь по созданию отчёта в MS Access 2010. Идея очень простая есть таблица клиенты и покупки, и надо группировать клиентов по количеству покупок (группировка по выражению). Например, 5 покупок клиент 1., 5., 6., и.т.д. Как это сделать? Спасибо.
|
veter48, суть, как я понимаю, сводится не к отчёту, а к построению правильного запроса.
На примере идущей в поставке базы данных «Борей» (я не знаю, включена ли она в поставку Office 2010, у меня — Office 2003; потому буду приводить скриншоты) требуемый запрос вида «Клиенты-Заказы» будет выглядеть примерно так: ![]() что соответствует запросу: Код:
SELECT Клиенты.Название AS Клиент, Count(Заказы.КодЗаказа) AS [Количество заказов] ![]() Оно? |
Ну как сделать запрос я знаю. Меня интересует именно отчет мне надо сделать такой отчет:
1 покупка клиент клиент клиент 2 покупки клиент клиент клиент 3 покупки клиент клиент клиент Надо группировать клиентов по Count() |
Цитата:
![]() После того, как отчёт будет открыт в конструкторе отчётов, Вам нужно будет добавить группировку по полю «Количество заказов» (из предыдущего примера): ![]() (как это сделать — для Вашей версии смотрите здесь: Общие сведения об отчетах - Access - Office.com: Добавление группировки, сортировки и итогов). Не забудьте в этом же окне указать создание в отчёте раздела заголовка для указанной группы (нижний красный овал на скриншоте). После этого осталось лишь добавить в отчёт в нужные разделы потребные поля и добавить «шашечки» в виде оформления: ![]() В итоге Вы должны получить примерно такой вид отчёта: ![]() Естественно, можно не создавать отдельный запрос, а использовать его текст в свойстве «Источник записей» самого отчёта. |
Цитата:
|
Цитата:
|
Спасибо, с этим я разобрался. Теперь есть следующий вопрос. Я хочу, чтоб под каждым клиентом показывались даты покупок, я создал text box и в contorl source пишу запрос:
Код:
= SELECT [Orders].[OrderDate] FROM [Orders] Where [Orders].[ClientID] = [ClientIDtxt] Но выкидывают ошибку. |
Цитата:
Цитата:
Вам потребуется создать Отчёт/Форму и вставить его в область данных текущего отчёта как элемент управления «Подчинённый отчёт/форма», связав его с данными текущего отчёта по нужному полю. Итак, первым делом нам нужно изменить исходный запрос так, чтобы он включал поле будущей связи «КодКлиента» из таблицы «Клиенты»: Затем мы создаём подчинённый отчёт в текущем отчёте при помощи элемента управления «Подчинённый отчёт/форма», вставляя его в область данных: Проходя по страницам Мастера, мы указываем следующее: На соответствующем шаге Мастера указываем поля для связи текущего отчёта и подчинённого отчёта (мы ведь уже поправили запрос, не так ли?) Не забываем задать в свойствах полученного элемента управления «Подчинённый отчёт» свойство «Расширение» равным «Да»: После этого сохраняем и закрываем текущий отчёт, открываем подчинённый отчёт в Конструкторе отчётов и приводим его к следующему виду: оставляя единственное поле «ДатаИсполнения» в области данных. Всё прочее удаляем, сохраняем и закрываем отчёт. Готово! |
Цитата:
|
okshef, спасибо, ясно.
Оно: Download: Access 2000 Tutorial: Northwind Traders Sample Database - Microsoft Download Center - Download Details |
Не знаю точно. Как-то так. И на русском
|
Цитата:
|
okshef, после добавления в запрос «2007» и я нашёл: Борей 2007 - Шаблоны - Office.com. Правда, сам я им всё равно пока не смогу пользоваться из-за более старой версии Microsoft Office. Так что, буду использовать в примерах базу, идущую в непосредственно поставке (она хотя бы локализована).
|
Извиняюсь, есть еще вопрос, как группировать по интервалу, допустим 1-2 покупок 3-4 итд?
|
Цитата:
2. Поле «Количество заказов» в заголовке группы делаете невидимым в отчёте (Макет -> Вывод на экран: «Нет»). 3. Добавляете на его место свободное поле с именем «Интервал». 4. В процедуру обработки секции заголовка этой группы добавляете код для формирования содержимого свободного поля «Интервал»: Код:
Private Sub ЗаголовокГруппы0_Format(Cancel As Integer, FormatCount As Integer) |
Время: 07:25. |
Время: 07:25.
© OSzone.net 2001-