Показать полную графическую версию : Группировка по выражению
Здравствуйте, нужна помощь по созданию отчёта в MS Access 2010. Идея очень простая есть таблица клиенты и покупки, и надо группировать клиентов по количеству покупок (группировка по выражению). Например, 5 покупок клиент 1., 5., 6., и.т.д. Как это сделать? Спасибо.
veter48, суть, как я понимаю, сводится не к отчёту, а к построению правильного запроса.
На примере идущей в поставке базы данных «Борей» (я не знаю, включена ли она в поставку Office 2010, у меня — Office 2003; потому буду приводить скриншоты) требуемый запрос вида «Клиенты-Заказы» будет выглядеть примерно так:
http://img827.imageshack.us/img827/2489/image002ev.png
что соответствует запросу:
SELECT Клиенты.Название AS Клиент, Count(Заказы.КодЗаказа) AS [Количество заказов]
FROM Клиенты INNER JOIN Заказы ON Клиенты.КодКлиента = Заказы.КодКлиента
GROUP BY Клиенты.Название
ORDER BY Count(Заказы.КодЗаказа) DESC;
который приводит к следующим результатам:
http://img706.imageshack.us/img706/3746/image003v.png
Оно?
Ну как сделать запрос я знаю. Меня интересует именно отчет мне надо сделать такой отчет:
1 покупка
клиент
клиент
клиент
2 покупки
клиент
клиент
клиент
3 покупки
клиент
клиент
клиент
Надо группировать клиентов по Count()
Ну как сделать запрос я знаю. Меня интересует именно отчет мне надо сделать такой отчет: »
Отлично. Теперь Вам надо, воспользовавшись конструктором, построить отчёт на основе созданного запроса:
http://img36.imageshack.us/img36/844/image000l.png
После того, как отчёт будет открыт в конструкторе отчётов, Вам нужно будет добавить группировку по полю «Количество заказов» (из предыдущего примера):
http://img703.imageshack.us/img703/2047/image001hj.png
(как это сделать — для Вашей версии смотрите здесь: Общие сведения об отчетах - Access - Office.com: Добавление группировки, сортировки и итогов (http://office.microsoft.com/ru-ru/access-help/HA010343725.aspx#_Toc258163972)). Не забудьте в этом же окне указать создание в отчёте раздела заголовка для указанной группы (нижний красный овал на скриншоте).
После этого осталось лишь добавить в отчёт в нужные разделы потребные поля и добавить «шашечки» в виде оформления:
http://img542.imageshack.us/img542/7369/image003o.png
В итоге Вы должны получить примерно такой вид отчёта:
http://img521.imageshack.us/img521/1194/image004mj.png
Естественно, можно не создавать отдельный запрос, а использовать его текст в свойстве «Источник записей» самого отчёта.
Естественно, можно не создавать отдельный запрос, а использовать его текст в свойстве «Источник записей» самого отчёта.
Именно так мне и надо, только как то не получается.
как то не получается. »
veter48, что именно не получается?
Спасибо, с этим я разобрался. Теперь есть следующий вопрос. Я хочу, чтоб под каждым клиентом показывались даты покупок, я создал text box и в contorl source пишу запрос:
= SELECT [Orders].[OrderDate] FROM [Orders] Where [Orders].[ClientID] = [ClientIDtxt]
([ClientIDtxt] text box где хранится ИД пользователя)
Но выкидывают ошибку.
Спасибо, с этим я разобрался. »
Отлично! Правда, Вы по-прежнему молчите, есть ли в Office 2010 такой пример, как база данных «Борей». Жду ответа.
Я хочу, чтоб под каждым клиентом показывались даты покупок, я создал text box и в contorl source пишу запрос: »
Результат запроса не может быть отображён в данном элементе управления.
Вам потребуется создать Отчёт/Форму и вставить его в область данных текущего отчёта как элемент управления «Подчинённый отчёт/форма», связав его с данными текущего отчёта по нужному полю.
Итак, первым делом нам нужно изменить исходный запрос так, чтобы он включал поле будущей связи «КодКлиента» из таблицы «Клиенты»:
http://img171.imageshack.us/img171/3403/image000mg.png
(или соответствующим же образом добавить это поле в запрос, содержащийся в свойстве «Источник данных» самого отчёта).
Затем мы создаём подчинённый отчёт в текущем отчёте при помощи элемента управления «Подчинённый отчёт/форма», вставляя его в область данных:
http://img580.imageshack.us/img580/5926/image001df.png
Проходя по страницам Мастера, мы указываем следующее:
http://img406.imageshack.us/img406/2451/image004t.png
http://img43.imageshack.us/img43/6527/image005g.png
На соответствующем шаге Мастера указываем поля для связи текущего отчёта и подчинённого отчёта (мы ведь уже поправили запрос, не так ли?)
http://img855.imageshack.us/img855/5448/image006c.png
Не забываем задать в свойствах полученного элемента управления «Подчинённый отчёт» свойство «Расширение» равным «Да»:
http://img59.imageshack.us/img59/4389/image002xl.png
После этого сохраняем и закрываем текущий отчёт, открываем подчинённый отчёт в Конструкторе отчётов и приводим его к следующему виду:
http://img717.imageshack.us/img717/2315/image003sn.png
оставляя единственное поле «ДатаИсполнения» в области данных. Всё прочее удаляем, сохраняем и закрываем отчёт.
Готово!
http://img84.imageshack.us/img84/6193/image007v.png
есть ли в Office 2010 такой пример, как база данных «Борей» »
Iska, есть, в "полноустановленной" версии. Но даже если нет - всегда можно скачать с сайта Office
okshef, спасибо, ясно.
Оно: Download: Access 2000 Tutorial: Northwind Traders Sample Database - Microsoft Download Center - Download Details (http://www.microsoft.com/download/en/details.aspx?id=19704) и более свежий: Download: NorthWind and pubs Sample Databases for SQL Server 2000 - Microsoft Download Center - Download Details (http://www.microsoft.com/download/en/details.aspx?id=23654) [по последней ссылке только базы под SQL]?
Не знаю точно. Как-то так. И на русском
http://okshef.narod.ru/Tech_Img/Access/NWTradeCom_Access.jpg
Iska, есть, в "полноустановленной" версии. Но даже если нет - всегда можно скачать с сайта Office
Да именно так.
okshef, после добавления в запрос «2007» и я нашёл: Борей 2007 - Шаблоны - Office.com (http://office.microsoft.com/ru-ru/templates/TC001228997.aspx). Правда, сам я им всё равно пока не смогу пользоваться из-за более старой версии Microsoft Office. Так что, буду использовать в примерах базу, идущую в непосредственно поставке (она хотя бы локализована).
Извиняюсь, есть еще вопрос, как группировать по интервалу, допустим 1-2 покупок 3-4 итд?
как группировать по интервалу, допустим 1-2 покупок 3-4 итд? »
1. Группировку по полю «Количество заказов» осуществляете не по полному значению, а по интервалу со значением «2».
2. Поле «Количество заказов» в заголовке группы делаете невидимым в отчёте (Макет -> Вывод на экран: «Нет»).
3. Добавляете на его место свободное поле с именем «Интервал».
4. В процедуру обработки секции заголовка этой группы добавляете код для формирования содержимого свободного поля «Интервал»:
Private Sub ЗаголовокГруппы0_Format(Cancel As Integer, FormatCount As Integer)
Me.Интервал = CStr(Me.Количество_заказов - Me.GroupLevel(0).GroupInterval + 1) & "-" & CStr(Me.Количество_заказов)
End Sub
В итоге получаете примерно следующее:
http://img851.imageshack.us/img851/9444/72577918.png
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC