Отчет о доступе: как группировать по одному полю, а сортировать по другому? - PullRequest
1 голос
/ 11 марта 2020

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

Я работаю в MS-Access 2016.

У меня есть отчет о жалобах клиентов, в котором есть поля: год, месяц, количество ([жалоба №]), жалоба c. (жалоба # - это буквальный идентификационный номер, который мы присваиваем каждой жалобе, введенной в таблицу)

Я сгруппировал отчет по годам и месяцам, а затем сгруппировал по жалобам c, и для каждого дес c провел подсчет номера жалобы, а затем сделал подсчет жалобы #, чтобы сложить общее количество жалоб за месяц и вставить его в нижний колонтитул месяца, что дает результат примерно так:

2020  03 <= (this is the month group header)

complaint desc | count of complaints/desc    
---------------------------------------------    
electrical     | 2                               {This section is 
cosmetic       | 6                               {in the Complaint_desc
mechanical     | 1                               {group footer
---------------------------------------------
                 9 <= (this is month group footer)

повторение группы для каждого месяц

Это все хорошо. Я хочу отсортировать записи в группе жалоб c в порядке убывания количества (жалоб №) так, чтобы это выглядело следующим образом:

2020  03 

complaint desc | count of complaints/category    
---------------------------------------------    
cosmetic       | 6
electrical     | 2                             
mechanical     | 1
---------------------------------------------                              
                 9

Однако все, что я делаю, похоже, не работает, встроенная сортировка группы des c "a on top" переопределяет сортировку в запросе. добавление сортировки по жалобе # также игнорируется. Я попытался добавить сортировку по количеству (жалоба №), и доступ сказал мне, что я не могу иметь агрегатную функцию в порядке (но я думаю, что она все равно была бы переопределена). Я также пытался сгруппировать по количеству (жалоба №), также сбил как совокупность в группе по. Попытался переместить жалобу c и сосчитать (жалобу №) в заголовок группы жалоб, и он облажал общее количество в нижнем колонтитуле месяца, а также разделил жалобу, c победившую свое первоначальное назначение ...

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

Любая идея?

1 Ответ

0 голосов
/ 11 марта 2020

Я понял это! Спасибо @UnhandledException, который заставил меня задуматься о правильном пути.

Итак, вот что я сделал: Исходный запрос, на котором основан отчет, содержал следующее:

Design mode:

Field | Year      | Month     | Complaint_Desc | Complaint# |
Total | Group By  | Group By  | Group By       | Group By   |
Sort  |           |           |                |            |

or in SQL: 

SELECT Year, Month, [tbl Failure Mode].[Code description], [Complaint Data Table].[Complaint #] 
FROM [tbl Failure Mode] RIGHT JOIN [Complaint Data Table] ON [tbl Failure Mode].[ID code] = [Complaint Data Table].[Failure Mode]
GROUP BY Year, Month, [tbl Failure Mode].[Code description], [Complaint Data Table].[Complaint #];

И затем я использовал функции группы и сортировки отчета, чтобы он показывал, как я хотел, за исключением упомянутого мною икота.

Я сделал другой запрос на основе этого запроса:

Design mode:

Field | Year       | Month      | Complaint_Desc | Complaint# |
Total | Group By   | Group By   | Group By       | Count      |
Sort  | Descending | Descending |                | Descending |

or in SQL: 

SELECT [qry FailureMode].Year, [qry FailureMode].Month, [qry FailureMode].[Complaint_description], Count([qry FailureMode].[Complaint #]) AS [CountOfComplaint #], [qry FailureMode].Complaint
FROM [qry FailureMode]
GROUP BY [qry FailureMode].Year, [qry FailureMode].Month, [qry FailureMode].[Code description], [qry FailureMode].Complaint
ORDER BY [qry FailureMode].Year DESC , [qry FailureMode].Month DESC , Count([qry FailureMode].[Complaint #]) DESC;

Затем я изменил структура отчета:

Я удалил группу Complaint_Des c, переместил complaint_des c и CountofComplaint # (теперь это не функция, а собственное вычисляемое поле из моего нового запроса) в раздел DETAIL отчета , Затем я удалил свой 2-й счет (жалоба №), который был в общем количестве нижнего колонтитула за каждый месяц, и заменил его на «AccessTotalsCountOfComplaint #», который равен = Sum ([CountOfComplaint #]), к которому у меня был доступ к автоматическому созданию по праву -нажмите на CountofComplaint_Des c в деталях, прокрутите до «Всего» и нажмите «Сумма». (Я удалил лишние AccessTotalsCountOfComplaint #, которые находились за пределами нижнего колонтитула группы месяцев, для которого я нуждался в этом ...)

Et Voila

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

...