Страница 2 из 2
Re: Событие после выборки данных из БД
Добавлено: 09 фев 2018, 13:25
Андрей Сорокин
Спасибо за ответ!
Re: Событие после выборки данных из БД
Добавлено: 09 фев 2018, 13:36
HighAley
Здравствуйте.
Мы всегда рады вам помочь.
Обращайтесь ещё, если будут вопросы.
Отдельное спасибо Леониду за помощь и объяснения по работе с нашим продуктом.
Спасибо.
Re: Событие после выборки данных из БД
Добавлено: 01 мар 2018, 14:29
Андрей Сорокин
Добрый день,
возникла ещё одна проблема. Я обработал событие StiOptions.Engine.GlobalEvents.ReportEndRender, в случае отсутствия данных генерю Exception чтобы прервать дальнейшее отображение отчёта.
Но, если произошла ошибка выполнения SQL-процедуры, невозможно получить Exception этой ошибки для анализа: по всей видимости исключение генерится после отработки события ReportEndRender. Хотелось бы сначала обработать SQLException, а потом уже выводить сообщение об отсутствии данных, если это произошло не по причине ошибки.
Re: Событие после выборки данных из БД
Добавлено: 05 мар 2018, 11:11
HighAley
Здравствуйте.
На данный момент у нас нет ответа.
Нам надо некоторое время, чтобы найти решение для вас.
Спасибо.
Ticket reference: #5903
Re: Событие после выборки данных из БД
Добавлено: 20 мар 2018, 17:22
Ivan
Здравствуйте.
Андрей Сорокин писал(а):Но, если произошла ошибка выполнения SQL-процедуры, невозможно получить Exception этой ошибки для анализа: по всей видимости исключение генерится после отработки события ReportEndRender. Хотелось бы сначала обработать SQLException, а потом уже выводить сообщение об отсутствии данных, если это произошло не по причине ошибки.
В нашем продукте часто используются операторы try...catch.
В некоторых случаях ошибка "проглатывается", в некоторых пробрасывается дальше.
Вызов события ReportEndRender происходит в finally блоке одного из опeраторов try..catch после построения всего отчёта, и однозначно уже после ошибки в SQL-процедуре.
В данном случае неясно, где именно происходит ошибка, но похоже что она "проглатывается".
Если отчёт не начинает строиться, т.е. дело не доходит до вызова метода BeginRender первой страницы,
то как вариант решения проблемы, вы можете добавить в отчёт переменную типа bool, и устанавливать её значение в true в событии BeginRender первой страницы.
А в событии EndRender проверять её значение.
Если false - значит скорее всего произошла ошибка при получении данных, и до построения отчёта дело не дошло.
Чтобы дать более конкретные рекомендации - вышлите пример проекта, на котором проблема воспроизводится.
Спасибо.