|
|
|
| как передать напрямую отфильтрованные записи из формы в отчет?
вариант сделать источником записей отчета рекордсет открытой формы не проходит, через временную таблицу неинтересно, а есть вариант напрямую?
заранее спасибо, Сергей | |
|
| |
|
|
|
| как отфильтрованные? свойством Filter формы или на уровне where запроса?
можно открыть отчет с таким же как у формы фильтром см. Docmd.openreport | |
|
| |
|
|
|
| имеется ввиду, что пользователь сам формирует набор записей по своему усмотрению и потребностям | |
|
| |
|
|
|
| Что значит сам? сам напишет SQL запрос? ПОльзователь же использует какой-то механизм...
Либо стандартные фильтры (тогда см. свойтсво Filter формы и передавайте его в параметре отчета)
Либо фитьтры построенные на запросе, типа
...where [idRegion] = [Forms]![Форма1]![cmbRegion]
В этом случае нужно анализировать состояние полей (списков) формы составляющих фильтр и составлять строку запроса используя ее в качестве источника строк отчета. | |
|
| |
|
|
|
| спасибо, понял, попробую (пользователь пользуется стандартными фильтрами), еже ли что, то переспрошу,
Сергей | |
|
| |
|
|
|
| Подскажите, пожалуйста, как разобрались?
Та же задача:
фильтр + поле со списком
Снова наступаю на эти грабли :(
Нужно чтоб значение текущего фильтра в форме (фильтр назначаю по полю со списком стандартным фильтром на панели инструментов) корректно передавалось фильтру в отчете.
Пытаюсь сделать вот так:
'это кнопка в форме которая открывает отчет и передает параметры фильтра
stDocName = "ИмяОтчета"
'проверка включен ли фильтр
If Me.FilterOn = True Then
stLinkCriteria = Me.Filter
Else
Me.Filter = ""
End If
DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria
но отчет не работает, т.к. в параметры ему передается белиберда, например:
(((Lookup_CompID.CompName="ЧП ""Океан""")))
а необходимо, чтоб передавался числовой ID компании. | |
|
| |
|
|
|
|
Lookup_CompID.CompName="ЧП ""Океан"""
|
Такие значения фильтра образуются когда пользуются штатные возможности фильтрации.
Варианты:
1. Заменить возможности штатного фильтра своими, где строка фильтра будут соответствовать синтаксису SQL для WHERE.
2. Не использовать фильтр формы для отчета, а на основании отфильтрованного набора данных
формы кодом собирать строку из значений ключевого поля записей и уже этот фильтр вручать отчету.
Должно получится что-то такое: "CompID IN(2,22,33,555)" | |
|
| |
|
|
|
| Спасибо!
Жаль, нельзя прикрутить штатный фильтр.
А какова м.б. максимальная длинна этой строки? | |
|
| |
|
|
|
| Спецификации Microsoft Access:
...
Число знаков в инструкции SQL приблизительно 64 000
...
Число знаков в инструкции SQL, работающей в качестве свойства Источник записей (RecordSource) или Источник строк (RowSource) формы, отчета или элемента управления (оба .mdb и .adp) 32 750
Конкретно про фильтр указан только тип данных: String. | |
|
| |