Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Опять рекордсет, сводные данные / 10 сообщений из 10, страница 1 из 1
10.12.2003, 05:53
    #32348542
Benz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
A2К Прошу совета. Есть база с документами. Необходимо ежемесячно делать сводные отчеты по количеству, типу документа и т.д и генерить его в WORD.Теперь вопрос - через рекордсет как правильно: 1.Открывать rs и в цикле суммировать значения переменных счетчиков по условиям 2.Открывать rs по условию (метод Open) брать нужное значение, закрывать rs, открывать со следующей инструкцией SQL и т.д. Что посоветуете, какой путь предпочтительнее?
...
Рейтинг: 0 / 0
10.12.2003, 06:45
    #32348549
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
А зачем в Word? Неужели нельзя обойтись аксесовским отчетом? Тогда рекордсет вообще не потребуется. Но это не так важно. Единственное, возможно, что придется делать в цикле, так это генерить строки отчета в Ворде. Хотя и без этого можно вполне обойтись. Что касается рекордсета, то открывать его нужно в качестве источника указав запрос, уже содержащий агрегированные данные. Естественно открытие рекордсета должно происходить 1 раз.
...
Рейтинг: 0 / 0
10.12.2003, 07:49
    #32348567
Benz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
Отчеты должны и формируются в Ворде.Этому несколько причин - 1.довольно сложные формы отчетности, периодически меняющиеся. 2.Требование управления, куда я передаю данные (они там их правят). С вордом все - ОК.

2Pavel. "Что касается рекордсета, то открывать его нужно в качестве источника указав запрос, уже содержащий агрегированные данные. Естественно открытие рекордсета должно происходить 1 раз."
Именно в этом и был вопрос - Если мне нужно агрегировать данные по разным признакам (скажем, 10 признаков. Например, все аннулированные, все аннулированные за месяц, все измененные, все измененные за год и т.д.), значит ли, что правильнее будет открывать и закрывать разные рекордсеты?.
...
Рейтинг: 0 / 0
10.12.2003, 08:56
    #32348605
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
Ну так и сделай 1 запрос, в котором собери все необходимые агрегации. В случе чего Union тебе поможет.
...
Рейтинг: 0 / 0
10.12.2003, 09:04
    #32348609
Benz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
2Pavel "Ну так и сделай 1 запрос, в котором собери все необходимые агрегации. В случе чего Union тебе поможет."

Простите неразумного, а как в одном запросе собрать, скажем итоговые количества выданных документов за прошлый месяц, кол-во аннулированных за год и к примеру, кол-во продленных до конца года ? :-(
...
Рейтинг: 0 / 0
10.12.2003, 09:09
    #32348612
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
Вариантов много: Union, iif, если adp то еще и CASE.
...
Рейтинг: 0 / 0
10.12.2003, 09:22
    #32348628
Benz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
2Pavel Я правильно понял, что нужно делать ОБЩИЙ запрос в который попадают ВСЕ необходимые данные, а потом их суммировать, используя всякие IIF, If ...ELSE и т.д? Т.е. вернее избрать п.1 (см.вопрос)?
...
Рейтинг: 0 / 0
10.12.2003, 09:35
    #32348645
Pavel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
Нет, это не п.1.
Все операции по агрегированию данных нужно выполнять наиболее оптимальными средствами, и в данном случае это использование SQL. Зачем крутиться в цикле, наращивая знаяения кучи счетчиков, если запрос может выдать готовое значение? Поскольку речь идет о различных, возможно взаимоисключающих агрегациях, готового оптимального запроса я привести не могу. Выкладывай структуру хранения данных и необходимые итоговые агрегации, тогда можно привести конкретный пример.
...
Рейтинг: 0 / 0
10.12.2003, 09:54
    #32348664
Benz
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
2Pavel Огромное спасибо за отзывчивость :-)
По последнему ответу полностью с тобой согласен, поэтому я и использую п.2 (см.вопрос). Т.е. используя соответствующие инструкции SQL открываю соотв.рекордсет, беру .RecordCount, благо тип курсора и локтайп позволяют, закрываю rs, новая инструкция SQL и т.д.
По структуре - tbl("Лицензии"). Fields: [Номер документа],[Дата выдачи],Дата изменения],[Дата аннуляции].
Задача: Ежемесячно выдавать в отчете:
1.Общее кол-во документов за год
2.Кол-во выданных документов за месяц
3.Общее кол-во аннулированных
4."-----" за месяц
5.Кол-во измененных
ну и так далее
Если не трудно, попробуй. У меня все работает, но хотелось бы рассмотреть другие варианты.Заранее благодарен. ЗЫ. На сегодня интернет закончился :-(
...
Рейтинг: 0 / 0
11.12.2003, 00:58
    #32349955
Alexander G
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять рекордсет, сводные данные
Для простоты - не не открывать рекордсеты, а пользовать DCount.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Опять рекордсет, сводные данные / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]