Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
1

Сумма при группировке в отчёте и источник записей

23.10.2016, 19:48. Показов 1652. Ответов 15
Метки нет (Все метки)

Решил домучить отчёт. 2 вопроса:

1. Можно ли в источник записей для формы/отчёта внедрить формулу?
Чтобы при загрузке отчёта в зависимости от значения контрола главной формы выбирался бы нужный запрос.

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

2. Можно ли в отчёте просуммировать поля, которые вынесены в заголовок группы? Или надо мутить с рекордсетом?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.10.2016, 19:48
Ответы с готовыми решениями:

Блохи Access с сортировкой при группировке по текстовому полю в отчете
Имеем отчет с двумя уровнями группировки 1 уровень - улица 2 уровень - номер дома Причем, номер...

При группировке не выводятся результаты для записей при Count = 0
В Ms Access 2000 две таблицы: родительская: Работники (Kod_Rab, Name, ...) - Код и имя...

Итоги по группировке в отчёте
Всем доброго время суток. Я создал отчёт в FastReport'e который группируется по отделениям и по...

Отчет СКД. Сумма по группировке
Всем привет. Есть отчет: --------------- Стоимость инвойса(ресурс) Гр.1...

15
Эксперт MS Access
26705 / 14385 / 3190
Регистрация: 28.04.2012
Сообщений: 15,783
23.10.2016, 20:07 2
Цитата Сообщение от corbis Посмотреть сообщение
1. Можно ли в источник записей для формы/отчёта внедрить формулу?
Чтобы при загрузке отчёта в зависимости от значения контрола главной формы выбирался бы нужный запрос.
Да, можно. На событии открытия отчета задаете для RecordSource отчета имя запроса или его SQL-выражение. Лишь поля совпадали у разных запросов.

Цитата Сообщение от corbis Посмотреть сообщение
2. Можно ли в отчёте просуммировать поля, которые вынесены в заголовок группы? Или надо мутить с рекордсетом?
Visual Basic
1
=[Поле1]+[Поле2]+[Поле3]
1
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
23.10.2016, 21:27  [ТС] 3
С кодом понятно, я имел ввиду в конструкторе сразу прописать,
типа:
Visual Basic
1
запрос & [Формы]![Форма1]![поле1]
Добавлено через 29 минут
Цитата Сообщение от mobile Посмотреть сообщение
=[Поле1]+[Поле2]+[Поле3]
тут бы не друг с другом, а аналог
Visual Basic
1
=Sum([Поле1])
, чтобы по всем записям.
0
Заблокирован
23.10.2016, 21:37 4
corbis, Вы же, судя по репе не первый день замужем, на форуме, могли бы и примерчик на сколько возможно урезаный выложить.
Я вот лично как и - alvk, не сильно давно сознавшийся, что последний хрустальный шарик пропил.
Тоже всё таки решился и зделал это вчерась.
0
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
23.10.2016, 22:00  [ТС] 5
В примечании поле tbTotal. В него нужно получить сумму по полю tbIn
1
Вложения
Тип файла: rar копия.rar (59.3 Кб, 6 просмотров)
Заблокирован
23.10.2016, 22:09 6
Похоже не для меня примерчик, выбрасывает сразу при открытии отчета в режиме просмотра.
Типа из высших версий, выше 2007 наверное преобразовали в - mdb?
Мой конвертатор такое чёй та не поддерживает.
0
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
23.10.2016, 22:19  [ТС] 7
Цитата Сообщение от PuhKMV Посмотреть сообщение
преобразовали в - mdb
именно так.
Ну, можно самостоятельно на основе таблицы отчем мастером слепить, если не лень.
Группировка по Payment_id и в заголовок группы вынесено всё, кроме date и his.
0
Эксперт MS Access
26705 / 14385 / 3190
Регистрация: 28.04.2012
Сообщений: 15,783
23.10.2016, 22:29 8
corbis 2 ошибки. В колонтитуле не работают агрегатные функции. В примечании группы или другом разделе запросто. Но не в колонтитуле.
Второе: параметром агрегатных функций отчета может быть только источник поля, а не название поля. Т.е. надо писать Sum([inP]), а не Sum([tbIn])
3
Заблокирован
23.10.2016, 22:31 9
Цитата Сообщение от corbis Посмотреть сообщение
Ну, можно самостоятельно на основе таблицы отчем мастером слепить, если не лень.
В том то и дело, что сёдня именно - Лень матушка обуяла.
Возможно, если завтра с ручника снимусь, то ночью на работе если всё будет благополучно и без авралов попытаюсь, хотя вижу - Боги тоже данным вопросом интересуются и соответственно вопрос скорее всего будет решен намного скоропостижнее.
Я ведь могу и целую неделю обдумывать из за своей тормознутости , да и не профи я, а только любитель и интересующийся.
0
Эксперт MS Access
26705 / 14385 / 3190
Регистрация: 28.04.2012
Сообщений: 15,783
23.10.2016, 22:48 10
Лучший ответ Сообщение было отмечено corbis как решение

Решение

Но можно схитрить и обойти ограничения зловредного колонтитула если отчет запускается в режиме предварительного просмотра. На событиях форматирования разделов определим переменные, которые рассчитаем и выдадим в поле колонтитула:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Option Compare Database
Option Explicit
 
Dim S, S1
 
Private Sub ВерхнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)
S = 0
S1 = 0
End Sub
 
Private Sub ЗаголовокГруппы0_Format(Cancel As Integer, FormatCount As Integer)
S1 = S
S = S + Me.tbIn
End Sub
 
Private Sub НижнийКолонтитул_Format(Cancel As Integer, FormatCount As Integer)
Me![tbTotal] = S1
End Sub
Но еще раз: события форматирования разделов не выполняются в режиме представления отчета (acReport), только в режиме предварительного просмотра (acViewPreview)
2
Вложения
Тип файла: rar копия24102016.rar (62.4 Кб, 2 просмотров)
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
23.10.2016, 23:26  [ТС] 11
не работает такой трюк, если отчёт является подчинённым. Пичаль.
Но трюк суперский!
0
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
24.10.2016, 06:21 12
corbis, если остро необходимо отобразить сумму именно в колонтиуле - создайте поле суммы там, где оно может быть посчитано (в примечании, скажем), сделайте невидимым, поле в колонтитуле приравняйте скрытому полю.

Добавлено через 8 минут
А, стоп. Посмотрела пример, поняла, что понимала вопрос неправильно. Вам нужна сумма по странице, а не по всему отчету на каждой станице. Тогда да, кроме приема mobile других вариантов нету.
0
Эксперт MS Access
6725 / 4322 / 269
Регистрация: 12.08.2011
Сообщений: 12,655
24.10.2016, 06:48 13
Цитата Сообщение от texnik-san Посмотреть сообщение
Вам нужна сумма по странице, а не по всему отчету на каждой станице.
можно на страницу вывести только одну группу в отчёте, если количество записей в группе не превышает одну страницу и подбить итоги по группе.
Вообще непонятна ситуация, когда нужна сумма по странице без привязки к какой-либо группе данных.
0
шапоклякистка 8-го дня
3665 / 2225 / 391
Регистрация: 26.06.2015
Сообщений: 4,647
Записей в блоге: 1
24.10.2016, 06:49 14
У него групп 20 на страницу влазят.
0
Эксперт MS Access
6725 / 4322 / 269
Регистрация: 12.08.2011
Сообщений: 12,655
24.10.2016, 07:11 15
всё равно должно быть что-то общее, иначе это броуновское движение.
0
546 / 273 / 50
Регистрация: 03.04.2015
Сообщений: 926
24.10.2016, 11:06  [ТС] 16
Цитата Сообщение от mobile Посмотреть сообщение
надо писать Sum([inP]), а не Sum([tbIn])
я знаю, что так надо, но при правильном написании неправильный результат.

В общем, решил проблему так:
1. При открытии (form_open) основной формы, проверяю и сохраняю имя запроса, который определяется значением группы переключателей.
2. При загрузке (form_load) основной формы сохраняю строку фильтра в отдельную переменную. Подсчёт произвожу через DSUm("InP", имя_запроса, строка_фильтра)

Хотелось считать силами формы, а не через запрос. Много всего и так запрашивается при открытии.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.10.2016, 11:06

Помощь в написании контрольных, курсовых и дипломных работ здесь.

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

Источник записей ListBox
Пожалуйста, подскажите: как правильно давать ссылку на источник записей для элемента управления...

Источник записей отчета
Добрый день! В таблице БД было поле типа OLE, в котором хранились документы MS WORD. Проблема...

Источник записей отчета
Добрый день! Имеется кнопка на форме, которая вызывает предварительный просмотр отчета Private...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.