Как сделать поддержку множественного результата ХП

Обсуждение Stimulsoft Reports.WEB
Ответить
levkin77
Сообщения: 30
Зарегистрирован: 12 апр 2013, 10:57
Откуда: Украина, Донецк
Контактная информация:

Как сделать поддержку множественного результата ХП

Сообщение levkin77 »

Предыстория....
1.Стандартно при использовании в качестве источника данных на основе SQL соединения делается несколько запросов: DataSourceMain, DataSourceSecondary и так далее... - необходимо получить несколько наборов данных для формирования отчета.
2.Используя хранимую процедуру можно получить все результаты за один раз (что является намного более правильным и корректным )
3.Да стандартно отчеты не поддерживают множественные результаты - делаем отчеты в дизайнере и подсовываем результат выполнения ХП:
report.RegData("Document", doc.PrintHeader);
report.RegData("DocumentDetail", doc.PrintData);
- код получения и чтения данных из ХП находиться непосредственно в приложении - что при большом количестве отчетов усложняет общую работу, для построения отчетов приходится применять не универсальные механизмы работы с отчетной системой, а персонализированное получение и построение отчетов.

Подскажите, есть ли возможность заполнения источника данных непосредственно в самом отчете на основе дополнительно метода и как это лучше организовать?
Интересен вариант именно заполнения данных непосредственно используя механизмы отчетной системы - событие на которое можно и нужно подключаться в самом отчете с вызовом дополнительного метода, который выполнит подключение к базе и заполнит необходимые данные в источниках.

Понимаю, что вопрос выглядит несколько непонятным, но в идеале хотелось бы отказаться от стороннего использования кода в приложении, а перенести сам метод в отчет, т.е. в идеале что-то вроде:
1. Передаем в отчет данные о соединении - (это есть)
2. В самом отчете у нас имеется дополнительный метод, который выполняет указанную в нем ХП возвращающую несколько результатов и подсовывающий их в данные отчета
Лёвкин Д.А.
http://www.moedelo.in.ua
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Re: Как сделать поддержку множественного результата ХП

Сообщение Aleksey »

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

К сожалению, но в самом отчете нельзя использовтаь прямое подключение к процедуре, которая возвращает несколько наборов данных. В данном случае будет возвращаться только первый набор данных из процедуры. Как вариант, вы можете в коде своего приложения использовать хранимую процедуру и регистрировать сразу все наборы данных.
Как вариант:

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

using (SqlConnection connection = new SqlConnection(@"Data Source=ALEKSEYPC\SE2012;Initial Catalog=Northwind;Integrated Security=True"))
{
    SqlCommand command = new SqlCommand();
    command.Connection = connection;
    command.CommandText = "Pr01";
    command.CommandType = CommandType.StoredProcedure;

    SqlDataAdapter storedProc = new SqlDataAdapter(command);
    DataSet ds = new DataSet();
    
    storedProc.Fill(ds);
    // в отчете будут зарегестрированы все наборы данных, возвращаемые хранимой процедурой
    report.RegData(ds);
}
Спасибо.
levkin77
Сообщения: 30
Зарегистрирован: 12 апр 2013, 10:57
Откуда: Украина, Донецк
Контактная информация:

Re: Как сделать поддержку множественного результата ХП

Сообщение levkin77 »

На данный момент поддержка множественности наборов данных из ХП не поддерживается ни одним из известных мне продуктов для отчетов на уровне самой отчетной системы...Это печально. Приведенный Вами пример - как раз и является единственным способом получения/подключения данных в отчет с использованием ХП возвращающий множественные результаты.

Если бы данный механизм присутствовал непосредственно в отчете - это дало бы значительный прирост в качестве и скорости разработки отчетов, не говоря уже о нагрузке на сервер баз данных.

P.S. А можно ли получать данные непосредственно в событиях отчета? Например в Report.BeginRender...
Лёвкин Д.А.
http://www.moedelo.in.ua
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Re: Как сделать поддержку множественного результата ХП

Сообщение Aleksey »

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

К сожалению, но это никак не получится сделать.
Для дизайна отчета вам необходима информация о названиях источников данных и их колонок.

Спасибо.
levkin77
Сообщения: 30
Зарегистрирован: 12 апр 2013, 10:57
Откуда: Украина, Донецк
Контактная информация:

Re: Как сделать поддержку множественного результата ХП

Сообщение levkin77 »

Aleksey писал(а): К сожалению, но это никак не получится сделать.
Для дизайна отчета вам необходима информация о названиях источников данных и их колонок.
- это относится к возможности (невозможности) использования Report.BeginRender?
Лёвкин Д.А.
http://www.moedelo.in.ua
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Re: Как сделать поддержку множественного результата ХП

Сообщение Aleksey »

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

Да, к этому тоже.

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