Страница 1 из 1

Повторный запрос параметров отчета, и перестроение отчета в старой форме, без создания новой

Добавлено: 05 сен 2011, 09:21
asylum17
Добрый день.

Ставиться следующая задача:
1. Создаётся отчет.
2. Пользователь, в форме отчета для запроса параметров водит данные запроса.
3. Отчет формируется.
4. Пользователь, щелкая мышью на элементе формы отрендеренного отчета. Снова вызывает форму для ввода параметров отчета из пункта 1.(возможно что для в обработке берутся отрендеренные данные с текущей страницы)


Пробовал решить следующим методом:

Этот код непосредственно вызывается в форме запроса параметров.
//StiReport rep = new StiReport();
//rep.Load(@"d:\ReportArguments.mrt");
while (true)
{
rep.Render();
rep.Show(true);
if ((bool)rep["exitLoop"] == true) break;
}
Таким методом не получается, так как форма отчета вызывается либо в начале отчета, получается бесконечный цикл для вода параметров, без прорисовки отчета.
Либо в конце отчета, когда формируется пустой отчет без параметров (если у формы поставить свойство - показывать в конце отчета)

Второй метод. При щелчке на элементе отрендеренного отчета, вызывается код
this.FormPar.ShowDialog();
this.Render();
this.Show(true);
таким образом всё работает хорошо, только создается абсолютно новый отчет, то есть создается каждый раз ещё одна новая форма.


как сделать :
1. Запрос параметров в форме отчета
2. Перерисовка уже в созданyой форме??? без создания новой форме. Как эквивалент действию, "обновить"

Повторный запрос параметров отчета, и перестроение отчета в старой форме, без создания новой

Добавлено: 05 сен 2011, 12:56
asylum17
Решение было найдено следующие

Вариант 1:

В отчет добавляется переменная у которой ставиться свойство "Запросить у пользователя". Таким образом при просмотре отчета, всегда можно поставить любое значение переменной или вообще не ставить, и обновить сам отчет. Но это не очень удобно, да и не красиво.

Вариант 2:

В обработчике события, при просмотре результата отчета:
this.FormPar.Visible = true;
this.FormPar.ShowDialog();
this.Dictionary.Synchronize();
this.Dictionary.Connect();
this.FormPar.Visible = false;
this.Render();

Сначала у формы стоит свойство FormPar.Visible = true и она нормально вызывается при начале работы отчета, куда можно занести параметры отчета.
Затем, когда отчет построен, вызывается событие по которому выполняется, приведённый выше код.
Форма становится видимой, вводятся параметры (заполняются значения переменных отчета), затем форма становится невидимой.

Поэтому при открытии отчета, хотя у формы и стоит свойство, вызывать при открытии, она не показывается, то есть избегаем зацикливания. и всё работает


тема закрыта.

Повторный запрос параметров отчета, и перестроение отчета в старой форме, без создания новой

Добавлено: 06 сен 2011, 07:08
HighAley
Здравствуйте.

Спасибо за выбор Stimulsoft Reports.