Подключение Crystal Report не закрывается с помощью SetDatabaseLogon - PullRequest
0 голосов
/ 19 октября 2011

Я использую Crystal Report (процедура привязки), которая не освобождает соединение при выходе из отчета. Я передаю параметр кристаллу как:

Dim InserSql = "exec USP_TEST parameter1,parameter2
ConnectDB() /* connecting to database */
DtAdapter = New OdbcDataAdapter(InserSql, Con)
DtAdapter.Fill(DataTable)
rpt.SetDataSource(DataTable)
rpt.SetDatabaseLogon("usrname", "password")
CrystalReportViewer1.ReportSource = rpt /* rpt is crystal report object */
Con.Close() /*closing connection */
rpt.Database.Dispose()
Con.Dispose() 

Закрывает соединение в пользовательском интерфейсе, но не освобождает соединение с отчетом Crystal. Пожалуйста, помогите.

1 Ответ

1 голос
/ 24 октября 2011

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

Dim InserSql = "exec USP_TEST parameter1,parameter2" 
ConnectDB() /* connecting to database */ 
DtAdapter = New OdbcDataAdapter(InserSql, Con) 
DtAdapter.Fill(DataTable)
DtAdapter.Dispose() /* dispose data adapter after filling datatable */
Con.Close()
Con.Dispose() /* connection disposed */
rpt.DataSourceConnections.Clear() /* Clear existing login/datasource for report object */ 
rpt.SetDataSource(DataTable)     
CrystalReportViewer1.ReportSource = rpt /* rpt is crystal report object */ 
CrystalReportViewer1.RefreshReport() /* rpt is refreshed with data from datatable and is not connected to database */
...