Предыстория....
1.Стандартно при использовании в качестве источника данных на основе SQL соединения делается несколько запросов: DataSourceMain, DataSourceSecondary и так далее... - необходимо получить несколько наборов данных для формирования отчета.
2.Используя хранимую процедуру можно получить все результаты за один раз (что является намного более правильным и корректным )
3.Да стандартно отчеты не поддерживают множественные результаты - делаем отчеты в дизайнере и подсовываем результат выполнения ХП:
report.RegData("Document", doc.PrintHeader);
report.RegData("DocumentDetail", doc.PrintData);
- код получения и чтения данных из ХП находиться непосредственно в приложении - что при большом количестве отчетов усложняет общую работу, для построения отчетов приходится применять не универсальные механизмы работы с отчетной системой, а персонализированное получение и построение отчетов.
Подскажите, есть ли возможность заполнения источника данных непосредственно в самом отчете на основе дополнительно метода и как это лучше организовать?
Интересен вариант именно заполнения данных непосредственно используя механизмы отчетной системы - событие на которое можно и нужно подключаться в самом отчете с вызовом дополнительного метода, который выполнит подключение к базе и заполнит необходимые данные в источниках.
Понимаю, что вопрос выглядит несколько непонятным, но в идеале хотелось бы отказаться от стороннего использования кода в приложении, а перенести сам метод в отчет, т.е. в идеале что-то вроде:
1. Передаем в отчет данные о соединении - (это есть)
2. В самом отчете у нас имеется дополнительный метод, который выполняет указанную в нем ХП возвращающую несколько результатов и подсовывающий их в данные отчета
Как сделать поддержку множественного результата ХП
Re: Как сделать поддержку множественного результата ХП
Здравствуйте,
К сожалению, но в самом отчете нельзя использовтаь прямое подключение к процедуре, которая возвращает несколько наборов данных. В данном случае будет возвращаться только первый набор данных из процедуры. Как вариант, вы можете в коде своего приложения использовать хранимую процедуру и регистрировать сразу все наборы данных.
Как вариант:
Спасибо.
К сожалению, но в самом отчете нельзя использовтаь прямое подключение к процедуре, которая возвращает несколько наборов данных. В данном случае будет возвращаться только первый набор данных из процедуры. Как вариант, вы можете в коде своего приложения использовать хранимую процедуру и регистрировать сразу все наборы данных.
Как вариант:
Код: Выделить всё
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);
}
-
- Сообщения: 30
- Зарегистрирован: 12 апр 2013, 10:57
- Откуда: Украина, Донецк
- Контактная информация:
Re: Как сделать поддержку множественного результата ХП
На данный момент поддержка множественности наборов данных из ХП не поддерживается ни одним из известных мне продуктов для отчетов на уровне самой отчетной системы...Это печально. Приведенный Вами пример - как раз и является единственным способом получения/подключения данных в отчет с использованием ХП возвращающий множественные результаты.
Если бы данный механизм присутствовал непосредственно в отчете - это дало бы значительный прирост в качестве и скорости разработки отчетов, не говоря уже о нагрузке на сервер баз данных.
P.S. А можно ли получать данные непосредственно в событиях отчета? Например в Report.BeginRender...
Если бы данный механизм присутствовал непосредственно в отчете - это дало бы значительный прирост в качестве и скорости разработки отчетов, не говоря уже о нагрузке на сервер баз данных.
P.S. А можно ли получать данные непосредственно в событиях отчета? Например в Report.BeginRender...
Лёвкин Д.А.
http://www.moedelo.in.ua
http://www.moedelo.in.ua
Re: Как сделать поддержку множественного результата ХП
Здравствуйте,
К сожалению, но это никак не получится сделать.
Для дизайна отчета вам необходима информация о названиях источников данных и их колонок.
Спасибо.
К сожалению, но это никак не получится сделать.
Для дизайна отчета вам необходима информация о названиях источников данных и их колонок.
Спасибо.
-
- Сообщения: 30
- Зарегистрирован: 12 апр 2013, 10:57
- Откуда: Украина, Донецк
- Контактная информация:
Re: Как сделать поддержку множественного результата ХП
- это относится к возможности (невозможности) использования Report.BeginRender?Aleksey писал(а): К сожалению, но это никак не получится сделать.
Для дизайна отчета вам необходима информация о названиях источников данных и их колонок.
Лёвкин Д.А.
http://www.moedelo.in.ua
http://www.moedelo.in.ua
Re: Как сделать поддержку множественного результата ХП
Здравствуйте,
Да, к этому тоже.
Спасибо.
Да, к этому тоже.
Спасибо.