Разное поведение на разных машинах

Обсуждение Stimulsoft Reports.NET
Ответить
EmeJIbka
Сообщения: 70
Зарегистрирован: 22 сен 2008, 14:07
Откуда: Russia

Разное поведение на разных машинах

Сообщение EmeJIbka »

Здравствуйте.
У нас есть приложение, которое работает на stireport 2010 года выпуска. В отчётах используются запросы к базе (oracle). В каких-то отчётах используются формы для запроса параметров, но в коде формы нет явного вызова метода Connect источников данных. Когда отчёт формируется, то источники самостоятельно подключаются к базе, несмотря на то что их свойство ConnectOnStart установлено в false. Более того, в некоторых отчётах есть источники с выключенным свойством ConnectOnStart, которые вызывают хранимки и эти источники никак в отчёте не используются. Но такое поведение наблюдается только у некоторых пользователей, т.е. у одних в отчёте есть данные, а у других нет, потому что отчёт запросы не делает.
Решили обновится до версии 2017.1.6, все источники, у которых свойство ConnectOnStart установлено в false больше не подключаются, пока явно не вызвать метод Connect. Увидел что появилось свойство Запрашивать только необходимые данные. Решил им воспользоваться, сделал простой отчёт с одним источником, у источника выключил свойство ConnectOnStart, данные из источника вывел на страницу, в результате на предпросмотре пусто. Включаем свойство "Запрашивать только необходимые данные", в предпросмотре данные появляются, хотя явного вызова метода Connect не было. Добавляем в отчёт форму, форма заполняет переменную, которая используется в запросе источника. На предпросмотре получаем ошибку, т.к. отчёт пытается выполнить запрос, а переменная ещё не инициализирована.
Что я делаю не так? Почему отчёт запрашивает данные до того, как закроется форма?
Пример отчёта во вложении
Вложения
Report.mrt
(7.21 КБ) 360 скачиваний
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Re: Разное поведение на разных машинах

Сообщение Aleksey »

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

Не получилось воспроизвести ошибку. Уточните пожалуйста, какую ошибку вы получаете?

Поведение свойства ConnectOnStart менялось в одной из версий 2016.х.х для корректного поведения при подключении данных, а также после добавления свойства "Запрашивать только необходимые данные".

Спасибо.
EmeJIbka
Сообщения: 70
Зарегистрирован: 22 сен 2008, 14:07
Откуда: Russia

Re: Разное поведение на разных машинах

Сообщение EmeJIbka »

Скачать отчёт из вложения
Открыть в дизайнере, поменять строку подключения к базе
Нажать "предпросмотр", получаем ошибку "ORA-00936: missing expression"
Леонид
Сообщения: 329
Зарегистрирован: 23 июл 2009, 09:53
Откуда: Moscow

Re: Разное поведение на разных машинах

Сообщение Леонид »

Добрый день!

Вы не создали параметр tempVar в параметрах явно, и потом в Oracle bind-переменные указывают с двоеточием вначале, т.е. :tempVar, не как у вас {tempVar}, - в последнем случае, это скорее всего больше похоже на форматирование C# типа string.Format() или его упрощённая форма $"".
В итоге вам необходимо переписать запрос так:

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

select sysdate from dual where 1 = :tempVar
P.S. Проверил на нескольких компьютерах, - поведение одинаковое везде, где одинаковый tnsnames.ora (на наших компах он, к примеру лежит в C:\oracle11203\network\admin\tnsnames.ora и содержание его везде одинаковое). Ещё может быть такой момент, что OracleClient на разных машинах разных версий, и тогда какие-то похожие, описываемые вами коллизии возможны. Стоит проверить всё вышеописанное.
Вложения
Clipboard01.png
Clipboard01.png (44.57 КБ) 3960 просмотров
EmeJIbka
Сообщения: 70
Зарегистрирован: 22 сен 2008, 14:07
Откуда: Russia

Re: Разное поведение на разных машинах

Сообщение EmeJIbka »

Вопрос не в том что используется в запросе переменные или код. В части отчётов используются переменные привязки, в части приходится вставлять выражения, которые изменяют текст запроса. Вопрос в том что при включенной опции "запрашивать только необходимые данные" и наличии формы в отчёте запросы выполняются ДО появления формы, а не после.
Aleksey
Сообщения: 2907
Зарегистрирован: 22 апр 2010, 06:57

Re: Разное поведение на разных машинах

Сообщение Aleksey »

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

В данном случае, необходимо задать дефолтное значение для переменной либо использовать параметры для источника данных.

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