16.05.2006, 12:49 | #1 |
Участник
|
Подскажите, как автоматически передать значения фильтров в отчет из формы.
Ситуация следующая: Я устанавливаю значения фильтров в форме для одной таблицы и необходимо чтобы после выбора фильтров их значения передавались для фильтрации данных в другой таблице, из которой потом создается отчет. Вручную каждый раз устанавливать фильтры для отчета очень не удобно. |
|
16.05.2006, 13:08 | #2 |
Участник
|
Один из способов:
rec.SETFILTER(...); rec.SETRANGE(...); REPORT.RUN(номер_отчета, TRUE, TRUE,rec); запустит отчет с установленными в rec фильтрами. Да, естессно, что отчет должен быть основан на этой таблице |
|
28.06.2006, 18:30 | #3 |
Участник
|
А если несколько таблиц?
Например Код: Lication Item |
|
28.06.2006, 18:56 | #4 |
NavAx
|
Ну вообще да, наверное проще всего написать в отчете функции, принимающий и накладывающие фильтры, объявить переменную типа репорт, вызвать функции и потом его запустить.
__________________
"Моей лошадке ядрышком полмордочки снесло..." А.В.Суворов, письма к дочери |
|
03.07.2006, 16:12 | #5 |
Участник
|
Можно в репорте определить датаайтемы на нужных таблицах. Обрабатывать их в отчете (обрабатывать записи этих айтемов) совсем не обязательно. Они будут только для принятия фильтров. То есть в триггере OnPreDataItem нужно написать CurrReport.BREAK. Наложить на эти айтемы фильтры извне можно командой Report.SETTABLEVIEW(Rec). Айтемов может быть несколько.
|
|
21.07.2006, 11:28 | #6 |
Участник
|
Цитата:
------SetParams(_String: Text[1024])----- Filter := _String; ------------------------------------------------ А потом из вызывающей формы: ReportVar.SetParams(Rec.GETVIEW); А потом где там надо в отчёте: SETVIEW(Filter); Извращение, конечно. Удобно: мало кода, репорт и форма будут иметь одинаковые ключи и фильтры. Плюс строку со вьюшкой если надо можно парсить вдоль и поперёк приятственно, или передавать в отчёт какой-нибудь самодельный фильтр. Неудобно: если вьюшка будет больше килобайта - вылетит.
__________________
--- GoldEd 2.50+/w32*Origin: Луц по 20 чаттлов! Остановите рост цен на бензин. (2:5099/15) |
|
21.07.2006, 12:07 | #7 |
Участник
|
Можно в тот же SetParam передать просто рек на котором лежат фильтры, а потом на OnPreDataItem написать COPYFILTER
|
|
21.07.2006, 13:09 | #8 |
Участник
|
Цитата:
Но COPYFILTERS вроде бы не копирует ключ, может случиться фильтрация не по тому ключу.
__________________
--- GoldEd 2.50+/w32*Origin: Луц по 20 чаттлов! Остановите рост цен на бензин. (2:5099/15) |
|