2013-10-20 125 views
0

我目前正致力於將Windows應用程序從VB6升級到VB.NET。該應用程序的組件之一包括Crystal Reports。我對VB和Crystal Reports非常新,所以我需要一些幫助。帶有大數據的Crystal Reports需要很長時間才能加載

讓我先說我的報告來拉正確的數據,有沒有語法錯誤,但曾經當我嘗試,並與衆多的記錄中提取數據,它需要很長的時間來加載開始。防爆。其中一個查詢包含返回的16000行,在VB6版本中需要大約1.5秒,但在.Net版本中需要18分鐘。我確信有些事情可以讓報告更有效率,但由於我沒有足夠的工作量,我需要幫助才能走上正軌。當報告試圖提取少量數據時,我沒有任何問題。

要生成我正在使用數據集的報告,我認爲這是減緩加載時間的部分。以下是我設置SQL Query的方式以及我設置數據集的方式示例。

sSQLQry = 「SELECT [COLUMN_NAMES] from Table1, Table2, Table3, Table4 WHERE [condition] ORDERBY col1,col2,col3 ASC 

    cnn = New SqlConnection(connectionString) 
    cnn.Open() 
    Dim dscmd As New SqlDataAdapter(sSQLQry, cnn) 
    Dim ds As New my_dataset 

    dscmd.Fill(ds, "table1") 
    dscmd.Fill(ds, "table2") 
    dscmd.Fill(ds, "table3") 
    dscmd.Fill(ds, "table4") 

    crystalreport1.SetDataSource(ds) 

    CrystalReportViewer1.Height = Me.Height 
    CrystalReportViewer1.Width = Me.Width 
    CrystalReportViewer1.Show() 
    CrystalReportViewer1.ReportSource = crystalreport1 

現在我認爲它慢的原因是因爲4填充方法,但我不知道如何解決這個問題。任何幫助是極大的讚賞。

回答

0

試試這個代碼,我用它在C#和Oracle Database但是我相信它可以幫助U:

 CRAXDRT.DatabaseTable T; 

     for (int i = 1; i <= report1.Database.Tables.Count; i++) 
     { 
      T = (CRAXDRT.DatabaseTable)report1.Database.Tables[i]; 
      CRAXDRT.ConnectionProperties cps = T.ConnectionProperties; 
      CRAXDRT.ConnectionProperty cp = 
       (CRAXDRT.ConnectionProperty)cps["User ID"]; 
      cp.Value = "Username" ; 
      cp = (CRAXDRT.ConnectionProperty)cps["Password"]; 
      cp.Value = "Password" ; 
      cp = (CRAXDRT.ConnectionProperty)cps["Data Source"]; 
      cp.Value = "DataSource" ; 
      T.SetLogOnInfo("DataSource", "", "Username", "Password"); 
     } 
0

水晶報表與在ADO.NET數據源的多個表的已知問題。連接數據真的很慢。

我們不得不這樣做來解決這個問題是建立在一個表(平面文件)的數據,然後將報告是非常快的。他們有這個問題,直到永都沒有做任何事情,所以不要屏住呼吸,他們會得到很快解決。

看到這個SAP ADO.NET Datasource Slow

相關問題