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

Получить текущее подключение с базой

Добавлено: 23 окт 2017, 12:17
t0pdevice
Идёт выполнение отчёта на Stimulsoft. Допустим я хочу его прервать и закрыть принудительно подключение с базой.
Каким образом можно получить текущее выполняемое подключение отчётом и выполнить Close()?
В отчёт добавлено подключение типа StiPostgreSQLDatabase.

Re: Получить текущее подключение с базой

Добавлено: 25 окт 2017, 15:54
Aleksey
Здравствуйте,

Вы можете получить подключение из словаря:
((StiPostgreSQLDatabase)report.Dictionary.Databases["ConnectionName"])

Спасибо.

Re: Получить текущее подключение с базой

Добавлено: 26 окт 2017, 17:40
t0pdevice
Это понятно. Но у StiPostgreSQLDatabase нет метода Close(), у нас используется Npgsql, как мне его преобразовать к NpgsqlConnection?

Re: Получить текущее подключение с базой

Добавлено: 02 ноя 2017, 09:23
Aleksey
Здравствуйте,

Извините за задержку с ответом.
Необходимо некоторое время для анализа проблемы.

Спасибо.

Re: Получить текущее подключение с базой

Добавлено: 07 ноя 2017, 11:44
t0pdevice
Я объясню для чего. У нас Stimulsoft отчёты строятся в отдельных потоках, следовательно на каждый вызов отчёта создается соединение с базой. Также в клиенте есть таймер построения отчёта и возможность отменить построение, есть отчёты которые формируются больше 10 минут. Вот после ручной отмены построения отчёта, соединение на базе с запросом остается висеть.
Отменяется отчёт таким кодом:

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

report.IsStopped = true;
report.Dispose();

Re: Получить текущее подключение с базой

Добавлено: 20 ноя 2017, 09:37
t0pdevice
Нет такой возможности?

Re: Получить текущее подключение с базой

Добавлено: 20 ноя 2017, 12:12
Aleksey
Здравствуйте,

К сожалению, нет. Не получится получить текущее подключение.

Спасибо.

Re: Получить текущее подключение с базой

Добавлено: 02 фев 2018, 13:29
t0pdevice
Можно сделать тогда, чтобы Dispose() закрывал все соединения с базой, которые активны в данный момент (используются в отчёте)?
Это очень необходимо. Проблема в том, что если идёт Render() и выполняется долгий запрос, то Dispose() его не отменяет.

Re: Получить текущее подключение с базой

Добавлено: 02 фев 2018, 16:18
t0pdevice
Либо нужна возможность получения соединения, чтобы потом с ним манипулировать.

Re: Получить текущее подключение с базой

Добавлено: 06 фев 2018, 02:11
Aleksey
Здравствуйте,

Пожалуйста, попробуйте попробовать его взять из report.DataStore
Также как вариант, вы можете можете задать Application Name="Key" в строке подключения и затем закрывать его в самой базе.

Спасибо.