Crystal报表连接未使用SetDatabaseLogon关闭

时间:2011-10-19 07:06:07

标签: vb.net crystal-reports-2008

我正在使用从报告退出时不释放连接的水晶报告(程序绑定)。 我将参数传递给crystal:

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() 

在UI中关闭连接但不释放水晶报告的连接。 请帮忙。

1 个答案:

答案 0 :(得分:1)

您使用报告登录服务器,但将报告的数据源设置为使用dataadapter拉取的数据表。填充数据表并连接后,您将不再连接到SQL Server,因为您正在使用内存中的数据集。而不是为报告设置登录凭据清除数据源连接并将数据源设置为内存中的数据表。

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 */