2012-09-25 67 views
0

我使用此代碼顯示報告的報告顯示,2010年vb.net太慢使用crytal報告

Dim rpt As New CrystalReport1() 

Dim sql As String 
Dim where As String 




If con Is Nothing OrElse con.State = ConnectionState.Closed Then 
    'MsgBox("closed") 
    OpenCon() 
End If 

Dim m As String 
m = "" 
For Each n As TreeNode In GetCheck(TreeView1.Nodes) 
    If n.Tag = 1 Then 
     m = m 
    Else 
     If m = "" Then 
      m = (n.Tag) 
     Else 
      m = m & ", " & (n.Tag) 
     End If 

    End If 

Next 

sql = "SELECT [bran_id],[f01],[f02],[f03],[f04],[f05],[f06],[f07],[f08],[bran_name],[comp_id],[comp_name],'" & dtStart.Value.Date & "' AS start_date, '" & dtEnd.Value.Date & "' AS end_date FROM [v_complain]" 

If m = "" Then 
    MsgBox("لم يتم تحديد اى مدينة من فضلك قم بالاختيار اولا") 
    Exit Sub 
Else 

    where = " WHERE bran_id in (" & m & ") and f02 between CONVERT(date,'" & dtStart.Value.Date & "',103) and CONVERT(date,'" & dtEnd.Value.Date & "',103)" 

    sql = sql + where 

    If cbF06.Checked = True Then 
     where = " AND (f06 like N'') or (f06 is null)" 
     sql = sql + where 
    End If 

    If cbF07.Checked = True Then 
     where = " AND (f07 like N'') or (f07 is null)" 
     sql = sql + where 
    End If 


    Dim dscmd As New SqlDataAdapter(sql, con) 
    Dim ds As New DataTable 

    dscmd.Fill(ds) 
    rpt.SetDataSource(ds) 
    CrystalReportViewer1.ReportSource = rpt 
    CrystalReportViewer1.Refresh() 

End If 
con.Close() 

,但它的速度太慢,顯示在第一時間報告。當我試圖在不關閉窗口的情況下再次運行它時,它可以很好地工作。有什麼辦法可以讓它更快嗎?

謝謝

回答

0

它有多慢?幾秒鐘? 我相信這種情況發生時需要初始化下屬報告的「引擎」。我有類似的問題,最好的我可以想出的是顯示「創建報告,請稍候...」消息給用戶,讓他們。或者,當您啓動應用程序時,您可以在後臺創建虛擬報告而不顯示任何內容給用戶,以便在用戶準備創建真實報告時初始化所有必需的資源。