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

Переменные в новых сборках

Добавлено: 01 окт 2008, 13:10
Andrey
Здравстувйте. Устал бить в бубен. Раньше делал:

rep.Load("report.mrt");
rep.Compile();
rep["Spell"] = SpellTextBox.Text;
rep["ConnectionString"] = DbConnection.ConnectionString;
rep.Render(false);
rep.Show();

Теперь никак не могу добиться смены значения переменных.
Всё как-то по-другому. За одно, раз даже это пока не получается, расскажите пожалуйста, как правильно в новых сборках делать следующие вещи:
1) как отрендерить в одну портянку несколько разных отчетов с разными переменными;
2) как отрендерить один и тот же отчет несколько раз в одну портянку, но с разными значениями переменных (напрашивается приведение к первой задаче, но, подозреваю, что можно как-то оптимальней).
Спасибо.

Переменные в новых сборках

Добавлено: 01 окт 2008, 18:22
Валерий В. Шинкевич
Теперь никак не могу добиться смены значения переменных.
Для установки значений переменных лучше написать отдельный метод типа:

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


public static void SetVariable(StiReport p_report, string name, object value)
        {

            if (p_report == null) return;

            if (p_report.IsCompiled ||
                !p_report.NeedsCompiling)
            {
                p_report[name] = value;
            }
            else
            {
                if (p_report.Dictionary.Variables.Contains(name))
                {
                    p_report.Dictionary.Variables[name].ValueObject = value;
                }
                else
                {
                    p_report.Dictionary.Variables.Add(name, value);
                }
            }
        }

вызывать так

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

SetVariable(rep, "Spell", SpellTextBox.Text);
SetVariable(rep,"ConnectionString", DbConnection.ConnectionString);
rep.Render(false);
rep.Show();
1) как отрендерить в одну портянку несколько разных отчетов с разными переменными;
Насколько я понял - вам нужно создать отчет с несколькими страницами (Page), и каждая страница будет представлять отдельный "отчет", но переменные будут общие для всего отчета (можно у переменных сделать префикс имени, для каждой страницы, чтобы не было путанницы, если страницы используют одноименные переменные, но с разными значениями)
2) как отрендерить один и тот же отчет несколько раз в одну портянку, но с разными значениями переменных (напрашивается приведение к первой задаче, но, подозреваю, что можно как-то оптимальней).
тогда уж лучше использовать DataSource, а не переменные....

Переменные в новых сборках

Добавлено: 02 окт 2008, 05:27
Andrey
1) как отрендерить в одну портянку несколько разных отчетов с разными переменными;
Есть разные отчеты со своими наборами переменных. Пользователь отмечает галочками те отчеты, которые ему нужны, и должен получить одну портянку в предпросмотре или на принтере. Т.е., инициализируются переменные строится отчет, инициализируются переменные второго отчета, он строится и добавляется к первому.. и т.д.
По второму пункту. Например, есть какой-то отчет по клиенту (ID клиента передается в переменную, а дальше запросом вытягиваются данные из базы). Пользователь выбирает нужных клиентов (несколько), и должен получить одну портянку для всех клиентов так же, как описано выше.

Переменные в новых сборках

Добавлено: 02 окт 2008, 12:44
Vital
Здравствуйте,
rep.Load("report.mrt");
rep.Compile();
rep["Spell"] = SpellTextBox.Text;
rep["ConnectionString"] = DbConnection.ConnectionString;
rep.Render(false);
rep.Show();

Теперь никак не могу добиться смены значения переменных.
Все проверил. Все работает. Шлите пример.
1) как отрендерить в одну портянку несколько разных отчетов с разными переменными;
Используйте свойство SubReports объекта StiReport.
2) как отрендерить один и тот же отчет несколько раз в одну портянку, но с разными значениями переменных (напрашивается приведение к первой задаче, но, подозреваю, что можно как-то оптимальней).
Используйте свойство SubReports объекта StiReport. Для каждого варианта создайте отдельный отчет.

Спасибо.