0 / 0 / 0
Регистрация: 11.11.2016
Сообщений: 10
|
|
1 | |
Запуск отчета по фильтру формы не из формы05.03.2017, 18:48. Показов 1968. Ответов 9
Метки нет (Все метки)
Доброго времени суток!
Помогите, пожалуйста решить проблему: Есть БД в формате Access2003. Есть форма с большим количеством полей, есть инструменты для задания различных фильтров для данных этой формы и есть отчет который должен строиться по отфильтрованному ключевому полю таблицы -- источника данных формы. Основная проблема в том что отчет запускается не из формы, а из созданной панели инструментов, поэтому передать фильтр напрямую в отчет при его вызове нельзя. Вопрос: нельзя ли как-нибудь обратиться SQL запросом к отфильтрованным данным открытой формы как к некой "виртуальной таблице" и на ее основе построить запрос для данных отчета? Или какие варианты решения проблемы есть? Сохранять фильтр в какую-нибудь глобальную переменную, а в отчет передавать и все данные формы, и еще недостающие данные для отчета? Еще видел здесь пример построения отчета путем копирования рекордсета, т.е. мне надо при открытии отчета скопировать рекордсет, в цикле его перебрать, взять только ключевое поле, допустим, во временную таблицу и уже на основе этой таблицы и таблицы с данными построить запрос? Может как-то попроще можно? И еще помогите, пожалуйста, найти этот пример (там три варианта построения отчета, третий - с помощью рекордсета), а то я один раз нашел, не сохранил, а второй раз чего-то не могу найти...
0
|
05.03.2017, 18:48 | |
Ответы с готовыми решениями:
9
Печать отчета по фильтру формы Печать отчета по фильтру для подчиненной формы Формирование отчета из формы по сложному фильтру (Access 2010) Открытие другой формы по фильтру |
Мы один, давай на "ты"
3632 / 1335 / 326
Регистрация: 16.06.2016
Сообщений: 3,179
|
|
06.03.2017, 04:11 | 2 |
И что? Пиши свою функцию и цепляй к своей панели. Не изобретай велосипедов, делай проще и стандартно, не нужны тебе рекордсеты форм как источник для отчёта.
Вот тебе пример -> https://www.cyberforum.ru/post9353752.html
1
|
0 / 0 / 0
Регистрация: 11.11.2016
Сообщений: 10
|
|
06.03.2017, 17:35 [ТС] | 3 |
Во! Спасибо огромное!
Ну я вот и пытаюсь понять как проще... В Вашем примере создал еще три отчета, каждый работает как нужно и ни один мне не нравится... Первый использует DLoockup -- на больших объемах будет тормозить. Второй делает временную таблицу -- висяк какой-то получается.. Да и перебор циклом по всему рекордсету тоже не айс. В третьем надо в источник данных отчета передавать все поля по которым может быть фильтр в форме, а это до фига выходит. Больше вариантов нет?
0
|
Модератор
|
|
06.03.2017, 18:50 | 4 |
а более реалистической таблицы и более правдоподобного отчета --тоже нет
я практически не вижу, чем отчеты 1-2-3 отличаются в 3-м -свободные поля увидела
0
|
Мы один, давай на "ты"
3632 / 1335 / 326
Регистрация: 16.06.2016
Сообщений: 3,179
|
|
06.03.2017, 19:25 | 5 |
shanemac51, да, отчёты не отличаются, так было задумано и специально намеренно упрощено. И задача примера показать, как открыть отчёт, а не виртуозное создание отчета.
Al8, вот зачем сложности тебе? Получи фильтр который применён к набору данных на форме и примени его к набору данных отчёта.
0
|
1256 / 476 / 103
Регистрация: 29.03.2016
Сообщений: 1,182
|
|
06.03.2017, 19:33 | 6 |
При открытии экземпляра формы создавайте для нее свою временную панель инструментов
с подпиской на события кнопок, опишите процедуры обработки событий кнопок. Не забудьте ссылку на офисную библиотеку в референсах. Вариант "простыней" в вашем примере:
1
|
Мы один, давай на "ты"
3632 / 1335 / 326
Регистрация: 16.06.2016
Сообщений: 3,179
|
|
06.03.2017, 20:04 | 7 |
Не очень понятна проблема. Сохрани запрос и используй его как источник для формы и отчёта. Если можно использовать фильтр для формы, то какая проблема его использовать для отчёта.
А так - беспредметный разговор.
0
|
Модератор
|
|
06.03.2017, 20:31 | 8 |
вот и вы увидели, что не все так прозрачно --я поэтому и задала уточняющий попрос
0
|
0 / 0 / 0
Регистрация: 11.11.2016
Сообщений: 10
|
|
06.03.2017, 21:17 [ТС] | 9 |
Вопрос именно в способе передачи данных в отчет, а сами отчеты одинаковые. Я создал еще три отчета (4, 5 и 6), которые вызываются из панели инструментов и в которых способы передачи данных в отчет разные.
В базе, которую я правлю, на главной форме несколько подчиненных форм, и в итоге в отчет надо передавать очень много полей по которым может быть фильтрация. Еще фильтр по форме может содержать много символов, сталкивался с тем, что для отчетов, которые вызываются с формы, длина фильтра оказывалась слишком большой, хотя сама форма фильтровалась (а отчет по ней просто не открывался). Но, видимо, да, придется сделать, как Вы говорите. Ну или поэкспериментирую со своим вторым вариантом. Спасибо, интересный способ. К сожалению, он не решает проблему передачи в отчет полей не нужных для отчета, но нужных для фильтрации. Я просто уже немного продвинулся относительно моего первоначального вопроса и понял что при открытии отчета могу получить фильтр формы с помощью "Forms", но мне не хотелось бы передавать туда все поля формы. Но все равно спасибо, на будущее пригодится. Проблема в том что данные формы не включают в себя все данные для отчета, а только некоторые. Поэтому данные для отчета надо объединять со многими данными формы и конструкция уж больно громоздкая получается. И я вот думал как бы ее сократить. Но, видимо, по простому никак, только по сложному. Тогда уж лучше громоздкая конструкция. Спасибо за обсуждение!
0
|
Мы один, давай на "ты"
3632 / 1335 / 326
Регистрация: 16.06.2016
Сообщений: 3,179
|
|
07.03.2017, 04:14 | 10 |
1
|
07.03.2017, 04:14 | |
07.03.2017, 04:14 | |
Помогаю со студенческими работами здесь
10
Запуск формы с данными из другой подчиненной формы! К фильтру применить ещё один фильтр (с динамическим обновлением формы) Просмотр отчета с формы Создание отчета из формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи | |||||
Как подключить JavaScript файл в другом JavaScript файле
InfoMaster 20.01.2025
В современной веб-разработке организация кодовой базы играет ключевую роль в создании масштабируемых и поддерживаемых приложений. Модульность и правильное структурирование кода стали неотъемлемыми. . .
|
Как откатить изменения в исходниках, не внесенные в Git
InfoMaster 20.01.2025
При работе с системой контроля версий Git разработчики часто сталкиваются с необходимостью отменить внесенные изменения в исходном коде. Особенно актуальной становится ситуация, когда изменения еще. . .
|
В чем разница между px, in, mm, pt, dip, dp, sp
InfoMaster 20.01.2025
В мире цифрового дизайна и разработки интерфейсов правильный выбор единиц измерения играет ключевую роль в создании качественного пользовательского опыта. История развития систем измерений для. . .
|
Как изменить адрес удалённого репозитория (origin) в Git
InfoMaster 20.01.2025
В терминологии Git термин origin является стандартным именем для основного удаленного репозитория, с которым взаимодействует локальная копия проекта. Когда разработчик клонирует репозиторий с. . .
|
Как переместить последние коммиты в новую ветку (branch) в Git
InfoMaster 20.01.2025
При работе над проектом часто возникают ситуации, когда необходимо изолировать определенные изменения от основной линии разработки. Это может быть связано с экспериментальными функциями, исправлением. . .
|
Как вернуть результат из асинхронной функции в JavaScript
InfoMaster 20.01.2025
Асинхронное программирование представляет собой фундаментальную концепцию в JavaScript, которая позволяет выполнять длительные операции без блокировки основного потока выполнения программы. В. . .
|
Какой локальный веб-сервер выбрать
InfoMaster 19.01.2025
В современной веб-разработке локальные веб-серверы играют ключевую роль, предоставляя разработчикам надежную среду для создания, тестирования и отладки веб-приложений без необходимости использования. . .
|
Почему планшеты и iPad уже не так популярны, как раньше
InfoMaster 19.01.2025
Эра революционных инноваций
История планшетов началась задолго до того, как эти устройства стали привычными спутниками нашей повседневной жизни. В начале 1990-х годов появились первые прототипы,. . .
|
Как самому прошить BIOS ноутбука
InfoMaster 19.01.2025
BIOS (Basic Input/ Output System) представляет собой важнейший компонент любого компьютера или ноутбука, который обеспечивает базовое взаимодействие между аппаратным и программным обеспечением. . .
|
Какой Linux выбрать для домашнего компьютера
InfoMaster 19.01.2025
Современные реалии выбора операционной системы
В современном мире выбор операционной системы для домашнего компьютера становится все более важным решением, которое может существенно повлиять на. . .
|
Как объединить два словаря одним выражением в Python
InfoMaster 19.01.2025
В мире программирования на Python работа со словарями является неотъемлемой частью разработки. Словари представляют собой мощный инструмент для хранения и обработки данных в формате "ключ-значение". . . .
|
Как без исключения проверить существование файла в Python
InfoMaster 19.01.2025
При разработке программного обеспечения на Python часто возникает необходимость проверить существование файла перед выполнением операций с ним. Это критически важная задача, которая помогает избежать. . .
|