|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
У меня следующий вопрос есть запрос на основании которого делается отчет. По сути на основании одного запроса нужно сделать несколько отчетов в одном из них к примеру нужно отсортировать данные по дате, в другом на основании фамилии и тд как делать в запросе критерии - понятно, потом можно при помощи формы вносить этот критерий в запрос в поле "условие отбора". Например на событие контрола [полекритерия] формы (ИмяФормы) который выбирает критерий для отчета, на событие "после обновления" повесить открытие отчета в запрос которого вствлен в условия отбора Forms![ИмяФормы]![полекритерия] Запрос один критериев - несколько, как осуществить механизм подстановки значений для критериев из разных форм при определенных событиях при чем, чтобы в одном случае можно было бы использовать один критерий в другом -2 а в третьем вообще неодного! Понятно, что можно написать несколько по сути одинаковых запросов с разными именами и сделать их источниками для нескольких запросов, но это сильно увеличит размер БД, а как сделать чтобы при работе с формами для выбора критериев для отчета работать с одним запросом! Я думаю это можно каким то образом осуществить через ВБА но незнаю как, я например делал в ВБА запросы для заполнения списка с выбором параметров из полей со списком, а как данное действие осуществить для запроса отчета! Спасибо за ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2007, 22:11 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
При нажатии на кнопку можно использовать DoCmd.OpenReport - команду открытия отчета, у нее есть параметр "условие открытия отчета". В зависимости от ваших замыслов, передавайте туда нужные критерии (значения для них можно брать из этой же формы), например: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
А из самого запроса все такие (динамические) условия уберите. Они подставятся туда в момент открытия отчета в соответствии с заданным параметром. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2007, 22:38 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
У меня в модуле функция: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9.
в событиях нажатия кнопки на формах я потом вставляю =ОткрытиеОтчета("имя отчета") как мне писать =ОткрытиеОтчета("имя отчета", acViewNormal, , "код=" & Me("код")) чтот попробовал не получается! В чем ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2007, 22:51 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Перед вызовом отчета командой OpenReport, вы можете переопределить источник записей отчета, отсортировав его как надо. Это можно сделать на основе сохраненного запроса, а можно определить источник (RecordSource) в процедуре, например вот так Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2007, 22:54 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
metallУ меня в модуле функция... в событиях нажатия кнопки на формах я потом вставляю =ОткрытиеОтчета("имя отчета") как мне писать =ОткрытиеОтчета("имя отчета", acViewNormal, , "код=" & Me("код")) чтот попробовал не получается! В чем ошибка?Ошибок несколько. При записи вызова функций в виде in-line вызовов (прямо в бланке свойств контрола) нельзя пользоваться константами vba (как в вашем случае acViewNormal) - вместо них нало писать их числовые значения. Также в таких вызовах нельзя писать Me (ссылку на текущую форму) - вместо этого надо полностью писать Forms![ИмяТекущейФормы]. Это первое. Второе - в вашей функции ОткрытиеОтчета строка открытия отчета написана без параметра условия:DoCmd.OpenReport stDocName, acPreviewСравните с вариантом: DoCmd.OpenReport stDocName, acPreview, , "код=" & Me("код")Выделенное красным - это то чего у вас нет, и это как раз то, из-за чего ваш сыр-бор в данной ветке. Поэтому, если вы хотите использовать всюду свою процедуру ОткрытиеОтчета для целей открытия отчетов с условиями, вам соответственно надо скорректировать там эту команду, ну и сделать параметр критерия в свой функции, естественно. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2007, 23:15 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Карфаген, пытаюсь вывести отчет по критерию год и месяц, предварительно просмотрел работающий запрос (запрос отчета) в СКЛ режиме пишу от туда........ WHERE (((Format([табКнигаПриходов]![датаПрихода],"yyyy-mm"))=[введите год и месяц в формате гггг-мм])) перекидываю в указанный тобою код: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2007, 00:22 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
metallно ругается на yyyy ошибка компиляции, я пробовал там скобки и т.д. но чтот не получается в чем ошибка?Ну а как он ваши синие кавычки от красных будет отличать в выражении:"(Format([табКнигаПриходов]![датаПрихода],"yyyy-mm"))="Рекомендую красные кавычки там заменить на одинарные. Заодно, возможно, предвосхищу ваш следующий вопрос. Format сконвертирует значение поля даты в строку, поэтому в вашем критерии результат этого Format следует сравнивать также со строкой. То есть, надо не & 2007-01 (это у вас вообще означает 2007 минус 1), а & "'2007-01'" ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2007, 00:53 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Спасибо Карфаген, именно в этом и была проблема Еще раз спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
15.01.2007, 01:02 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Карфаген, в контексте вышеизложенного возникает вопрос а как при нажатии кнопки, которая открывает отчет с требуемыми параметрами програмно присвоить определенное значение названия отчета то есть у меня проблемы с присвоением значения полю отчета я пишу типа: Reports!отчКнигаПриходов!Надпись33 = "124віаів" но не работатет! вот код: Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 14:12 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Попробуйте делать в обработке событий самого отчета. Например, в событии "Форматирование" разделов отчета (т.е. в момент, когда поля отчета заполняются данными из его источника). Либо можете написать свою функцию, которая возвращает это (текущее) название, а в источнике данных поля отчета написать вызов этой функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 14:41 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
KarfaqenПопробуйте делать в обработке событий самого отчета. Например, в событии "Форматирование" разделов отчета (т.е. в момент, когда поля отчета заполняются данными из его источника). Либо можете написать свою функцию, которая возвращает это (текущее) название, а в источнике данных поля отчета написать вызов этой функции. "Форматирование" разделов отчета - а как отследить разные моменты, то есть при нажатии кнопки 1 нужно название - Имя1, а при нажатии на кнопку 2 нужно название Имя2 ? Посмотрел справку FormatCount исходя из этого мыслю: Код: plaintext 1. 2. 3. 4. 5. 6. 7.
как к этому FormatCount обратиться из процедуры нажатия кнопки для открытия отчета? Или я не так вообще мыслю. по поводу 2го совета - функции - механизм вообще не представляю подскажи как делать! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 15:53 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
metallИли я не так вообще мыслюВообще не так. metallпо поводу 2го совета - функции - механизм вообще не представляю подскажи как делать!Тогда самый простой и понятный вам вариант: 1) объявить глобальную переменную в общем модуле; 2) в нажатиях кнопок перед открытием отчета записывать в эту переменную нужное назвнание; 3) в общем модуле написать функцию которая возвращает эту переменную; 4) в отчете у контрола в свойстве "данные" написать вызов этой функции. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 16:23 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Karfaqen 1) объявить глобальную переменную в общем модуле; 2) в нажатиях кнопок перед открытием отчета записывать в эту переменную нужное назвнание; 3) в общем модуле написать функцию которая возвращает эту переменную; 4) в отчете у контрола в свойстве "данные" написать вызов этой функции. 1) в модуле пишу: Код: plaintext
Код: plaintext 1. 2. 3.
Код: plaintext 1. 2.
Логика правильная? Где неточности? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 17:04 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
В общем модуле Код: plaintext 1. 2. 3. 4. 5. 6. 7.
В модулях форм: Код: plaintext 1. 2. 3.
В отчете: 4) у контрола в свойстве "данные" написать вызов этой функции:=GetReportTitle() ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 17:23 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Спасибо Карфаген! Все работает! Я понял где допустил просчеты (не хватает базовых знаний)! Еще раз спасибо за помощь!!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
16.01.2007, 17:33 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Подскажите, пж, где ошибка порылась? Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Причем "Сервисное обслуживание" это не название поля, а значение в поле. Т.е. хочу сделать выборку в отчете без этих данных. При таком коде Сase 1 и 2 выдают пустой отчет, третий норм. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2020, 13:28 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga Подскажите, пж, где ошибка порылась. Попробуйте так: Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2020, 13:51 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
__Michelle, Спасибо за вариант, извиняюсь, но я наверно не совсем правильно сформулировал свою задачу. Вот до этого момента код выдает правильные результаты: Код: vbnet 1.
т.е. отдельное логическое поле в отчете или false или true у меня, но к этому еще хочу добавить условие, чтобы в отчете не показывались записи, где поле [Предмет договора] имеет значение "Сервисное обслуживание" (кстати, как в VBA маску написать, как в запросе Like "Сервис*"? т.е. дальше может быть продолжение) В предложенном вами коде в отчете все равно выходят записи с "Сервисным обслуживанием" и фильтрация по полю [Закрыт] не идет правильно ( ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2020, 17:09 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga В предложенном вами коде в отчете все равно выходят записи с "Сервисным обслуживанием" и фильтрация по полю [Закрыт] не идет правильно ( выложите пример базы, не заставляйте угадывать вашу конкретику ... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2020, 17:58 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga, Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.02.2020, 18:17 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Все фильтрует как задумывалось! Спасибо, и за ссылку тоже! ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 08:51 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
ПЕНСИОНЕРКА, ну я бы конечно выложил пример, если возникло дальнейшее недоразумение ) Просто с рабочей БД выдергивать формы, отчеты, редактировать данные дольше было. Я ее все еще с 2007 года все дорабатываю, дорабатываю, вот решил сократить кол-во отчетов с 11 (!) до 1 (одни и те же данные, только условия отбора разные)) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 09:07 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga, В таком случае,по моему,лучше всего сделать свободную форму открытия с группами переключателей (полейСоСписком),в зависимости от состояния (значений) которых формировать строку WHERE, которую использовать в OpenReport (нажатие кнопки на этой форме) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 12:57 |
|
|
start [/forum/topic.php?fid=45&msg=34258776&tid=1610211]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 175ms |
0 / 0 |