"GetTotal2" ????

Обсуждение Stimulsoft Reports.NET
Ответить
Валерий В. Шинкевич
Сообщения: 83
Зарегистрирован: 21 фев 2007, 06:29
Откуда: Нижний Новгород/Йошкар-Ола

"GetTotal2" ????

Сообщение Валерий В. Шинкевич »

Пишу в обработчике события BeginRender страницы:

Код: Выделить всё

Страница2.Enabled = (Totals.Sum(Данные2, this, "Lots.Number") != 0);
В коде появляется:

Код: Выделить всё

public void Страница2_BeginRender(object sender, System.EventArgs e)
        {
            Страница2.Enabled = (Totals.Sum(Данные2, this, "GetTotal2", "Lots.Number") != 0);
        }
почему?

PS: Спросите - почему Sum, а не Count ? - а Count выдает количество строк в источнике данных (т.е. всего) а не тех строк, которые попадают под условие в Данные2
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

"GetTotal2" ????

Сообщение Vital »

Здравствуйте,

Генератор отчетов меняет текст метода для того, чтобы иметь возможность вычислить выражение. Выражение выделается в отдельный метод - "GetTotal2". В вашем случае выражением является строка "Lots.Number". А должно быть Lots.Number != 0.

Спасибо.
Валерий В. Шинкевич
Сообщения: 83
Зарегистрирован: 21 фев 2007, 06:29
Откуда: Нижний Новгород/Йошкар-Ола

"GetTotal2" ????

Сообщение Валерий В. Шинкевич »

Vital писал(а):Здравствуйте,

Генератор отчетов меняет текст метода для того, чтобы иметь возможность вычислить выражение. Выражение выделается в отдельный метод - "GetTotal2". В вашем случае выражением является строка "Lots.Number". А должно быть Lots.Number != 0.
Ну, в моём случае, должно быть именно то, что я написал - если сумма Lots.Number не равна нулю, то страница должна быть включена, иначе её не надо выводить.
И проверка Lots.Number != 0 в таком случае бессмысленна.

Валерий В. Шинкевич
Сообщения: 83
Зарегистрирован: 21 фев 2007, 06:29
Откуда: Нижний Новгород/Йошкар-Ола

"GetTotal2" ????

Сообщение Валерий В. Шинкевич »

Вообще, хотелось бы рецепты для таких случаев:

1. Выводить страницу если в источнике есть данные. Актуально ли это ?
2. Выводить страницу только если в датабенде выводится хоть одна строка. (в зависимости от условий в фильтрах датабенда)
3. При нескольких датабендах на странице выводить страницу если хотя бы в одном датабенде выводится хотя бы одна строка. (также в зависимости от условий в фильтрах датабенда)
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

"GetTotal2" ????

Сообщение Vital »

Здравствуйте,
wash_ai писал(а):
Vital писал(а):Здравствуйте,

Генератор отчетов меняет текст метода для того, чтобы иметь возможность вычислить выражение. Выражение выделается в отдельный метод - "GetTotal2". В вашем случае выражением является строка "Lots.Number". А должно быть Lots.Number != 0.
Ну, в моём случае, должно быть именно то, что я написал - если сумма Lots.Number не равна нулю, то страница должна быть включена, иначе её не надо выводить.
И проверка Lots.Number != 0 в таком случае бессмысленна.
Я имел ввиду, что у Вас выражение является строкой, не ссылкой на поле.

Спасибо.
Vital
Сообщения: 647
Зарегистрирован: 09 июн 2006, 12:23

"GetTotal2" ????

Сообщение Vital »

Здравсвуйте,
wash_ai писал(а):Вообще, хотелось бы рецепты для таких случаев:

1. Выводить страницу если в источнике есть данные. Актуально ли это ?
2. Выводить страницу только если в датабенде выводится хоть одна строка. (в зависимости от условий в фильтрах датабенда)
3. При нескольких датабендах на странице выводить страницу если хотя бы в одном датабенде выводится хотя бы одна строка. (также в зависимости от условий в фильтрах датабенда)
Ответ на эти вопросы есть в топике, ссылку на который Вы привели. Все это реализуется сейчас в скрипте.

Спасибо.
Валерий В. Шинкевич
Сообщения: 83
Зарегистрирован: 21 фев 2007, 06:29
Откуда: Нижний Новгород/Йошкар-Ола

"GetTotal2" ????

Сообщение Валерий В. Шинкевич »

Vital писал(а): Ответ на эти вопросы есть в топике, ссылку на который Вы привели. Все это реализуется сейчас в скрипте.
В топике есть только ответ на первый вопрос. Когда выводится если в источнике есть строки.

Что делать когда, например, в DataSource 100 строк, а в датабенд1 (с учетом фильтров) на Page2 попадает только 10 записей,
а у ДатаБенд3 на Page3 условию фильтра не соответствует ни одной строки и эту страницу вообще не надо выводить ???
Есть ли простое решение ?

Edward
Сообщения: 930
Зарегистрирован: 09 июн 2006, 12:23

"GetTotal2" ????

Сообщение Edward »

Здравствуйте.
wash_ai писал(а):В топике есть только ответ на первый вопрос. Когда выводится если в источнике есть строки.
Что делать когда, например, в DataSource 100 строк, а в датабенд1 (с учетом фильтров) на Page2 попадает только 10 записей,
а у ДатаБенд3 на Page3 условию фильтра не соответствует ни одной строки и эту страницу вообще не надо выводить ???
Есть ли простое решение ?
Самое простое решение - это разместить 3 датабэнда на самой первой странице. Установить у них у всех высоту в 0 и фильтры соответсвенно. Для всех последующих страниц установить Enabled = false. В BeforePrintEvent каждого бэнда написать следующий код:

Page2.Enabled = true

Т.е. если фильтр позволит вызваться BeforePrint хотя бы раз, то соответсвующая страница включится.

Спасибо.
Ответить