【问题标题】:Crystal report connection not getting closed using SetDatabaseLogonCrystal 报表连接未使用 SetDatabaseLogon 关闭
【发布时间】:2011-10-24 23:21:54
【问题描述】:

我正在使用水晶报表(程序绑定),当我退出报表时它不会释放连接。 我将参数传递给水晶:

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 中关闭连接但不释放水晶报表的连接。 请帮忙。

【问题讨论】:

  • 您如何验证连接已关闭?这是一个 winform 还是 ASP.NET Web 应用程序?
  • 不,它是 Windows 应用程序。我正在从服务器连接中识别打开的连接。

标签: vb.net crystal-reports-2008


【解决方案1】:

您正在使用报告登录服务器,但将报告的数据源设置为使用数据适配器提取的数据表。填充数据表并处理连接后,您将不再连接到 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 */

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2014-08-17
    相关资源
    最近更新 更多