|
критерии для запроса отчета
|
|||
---|---|---|---|
#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 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
sdku, да, я так и сделал, в свободной форме группа переключателей, спасибо Панургу, помог с кодом. Теперь у меня один отчет!) ... |
|||
:
Нравится:
Не нравится:
|
|||
24.02.2020, 19:27 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Извиняюсь, еще один вопрос по этой теме. Не могу добавить Crit в первую строку после If. Пробовал везде: и спереди, и сзади )), с запятыми, амперсантами и с кавычками в разных вариантах... Иногда никакой ошибки не выдает, но и фильтр по датам не происходит. Подскажите, пж, куда и с чем? ) Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 11:52 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga Код: vbnet 1.
Не можешь сам, используй BuildCriteria например Код: vbnet 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 13:02 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga, я же ссылку давал на создание запросов. Тут точно так же как там написано. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 13:03 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Панург, спасибо!! А Crit я срисовал с книжки одной, причем вариант работает. Во второй строке моего же условия на If все выводит правильно. Но я конечно переделаю как надо, а то видать устарела конструкция ) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 13:18 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Как вариант: ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2020, 15:39 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga А Crit я срисовал с книжки одной, причем вариант работает. Во второй строке моего же условия на If все выводит правильно. Но я конечно переделаю как надо, а то видать устарела конструкция ) Панург kniga Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 04:12 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
sdku, большое спасибо за Ваш вариант! Правда кажется немного длинноватым код, учитывая то, что у меня Сase(ов) 4, и на каждом с условием If. )) Извините, я воспользовался вашим примером для добавления моей формы, чтобы показать весь код на кнопку в ней:) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 11:24 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
Панург, прикладываю фотки книги откуда я взял процедуру. Издание 2006 года, я применил ее году так в 2008, все работает и когда вводишь дату в форму через слеш и через тире. Я так понял главное точки в датах в процедуре не ставить, ошибочно будет показывать. По поводу кода в моей форме, в приложенной выше базе, то я вместо Crit , просто добавил ее полное определение в конструкцию wherecondition и все работает как планировалось . Но как то некрасиво выглядит, все-таки если описана переменная Crit то и вставлять надо именно Crit .. наверно, как в самой последней строчке кода. Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 11:38 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
На всякий случай еще раз вопрос: Как "воткнуть" именно Crit , а не все ее определение после WhereCondition или внутри этого условия? (Извиняюсь за незнание терминологии) Кстати, я пытался сделать перенос строки, смиряясь с ее длиной, но _, _& не помогает. Видать внутри аргумента WhereCondition нельзя делить строку? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 11:51 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga .....Правда кажется немного длинноватым код... Особенно если учесть что в каждом шаге CASE повторяется,за небольшими изменениями,одно и то же kniga ...Как "воткнуть" именно Crit , а не все ее определение после WhereCondition или внутри этого условия?... Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 12:51 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
sdku, спасибо! Бум думать ) А перенос в длинной строке я сделал, знак переноса не там ставил, надо было перед &Format, а я ставил перед AND )) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 14:06 |
|
критерии для запроса отчета
|
|||
---|---|---|---|
#18+
kniga, У себя для сбора условий по дате использую такую функцию Код: vbnet 1. 2. 3.
может использоваться так Код: vbnet 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.02.2020, 17:40 |
|
|
start [/forum/topic.php?all=1&fid=45&tid=1610211]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
62ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 182ms |
0 / 0 |