簡體   English   中英

Crystal Reports未加載數據vb.net

[英]Crystal Reports not loading data vb.net

在我的項目中,我有一個按鈕,當單擊該按鈕時,該按鈕應該從我的SQL Server數據庫中打印當前處於活動狀態的所有合同。 有數百個有效合同,但是現在,當我按下按鈕時,報告表單將被加載,但報告卻不會。

我將盡力使用圖像和代碼來演示這一點,但是有人能說明為什么會這樣嗎?

//打印按鈕的代碼

 Private Sub btnPrintActive_Click(sender As Object, e As EventArgs) Handles btnPrintActive.Click

    Try
        Dim objlist As New ReportDocument
        objlist.Load(readIni("REPORTS", directorypath & "connectionpaths.ini") & "\ContractList.rpt")

        Dim info As CrystalDecisions.Shared.TableLogOnInfo
        info = New CrystalDecisions.Shared.TableLogOnInfo()

        info.ConnectionInfo.DatabaseName = ""
        info.ConnectionInfo.ServerName = readIni("CONTRACTSTRING", directorypath & "connectionpaths.ini")
        info.ConnectionInfo.Password = ""
        info.ConnectionInfo.UserID = ""
        objlist.Database.Tables(0).ApplyLogOnInfo(info)

        objlist.RecordSelectionFormula = "{tblContracts.Agreement} = 'ACTIVE'"

        Dim f As frmReports
        f = New frmReports(con, acccon, "", 0, "", acccon, , objlist, , )
        f.Show()

    Catch ex As Exception
        errorLog(ex.Message, ex.StackTrace)
        MsgBox("Failed to retrieve contract information from 'database', refer to error log")
    End Try

End Sub

//這是報告表格,但沒有報告

在此處輸入圖片說明

//證明有活動的報告

在此處輸入圖片說明

現在,此問題已解決。 問題是我在報表中使用了2個數據庫表,但只提供了1個的登錄信息,而第二個表未從服務器接收數據,因此為什么不顯示它。 我所做的另一件事是更改了它以空白值登錄的事實。 我的固定代碼現在是這個;

 Private Sub btnPrintActive_Click(sender As Object, e As EventArgs) Handles btnPrintActive.Click

    Try
        Dim objlist As New ReportDocument
        objlist.Load(readIni("REPORTS", directorypath & "connectionpaths.ini") & "\ContractList.rpt")

        Dim info As CrystalDecisions.Shared.TableLogOnInfo
        info = New CrystalDecisions.Shared.TableLogOnInfo()

        Dim servername As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "servername"))
        Dim database As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "database"))
        Dim username As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "username"))
        Dim password As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "password"))
        Dim provider As String = (readIni("SQLConnection", directorypath & "connectionpaths.ini", "provider"))

        info.ConnectionInfo.DatabaseName = database
        info.ConnectionInfo.ServerName = servername
        info.ConnectionInfo.Password = password
        info.ConnectionInfo.UserID = username

        objlist.Database.Tables(0).ApplyLogOnInfo(info)
        objlist.Database.Tables(1).ApplyLogOnInfo(info)

        objlist.RecordSelectionFormula = "{tblContracts.Agreement} = 'ACTIVE'"

        Dim f As frmReports
        f = New frmReports(con, acccon, "", 0, "", acccon, , objlist, , )
        f.Show()

    Catch ex As Exception
        errorLog(ex.Message, ex.StackTrace)
        MsgBox("Failed to retrieve contract information from database, refer to error log")
    End Try

End Sub

嘗試比較一下:

 try
            {

                String APPPATH = String.Empty;
                CRPT = new ReportDocument();
                APPPATH = System.IO.Directory.GetCurrentDirectory() + "/CrystalReport/CrystalReport1.rpt";
                //APPPATH = "~/Crystal_report/mosum.rpt";
                CRPT.Load(APPPATH);
                crViewer.RefreshReport();

                CLASS_PROJECT.crystalReportcls rptcls = new CLASS_PROJECT.crystalReportcls();

                ParameterFields paramFields = new ParameterFields();
                ParameterField paramField = new ParameterField();
                ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
                paramField.Name = "sdate";
                paramDiscreteValue.Value = "2016-07-01";
                paramField.CurrentValues.Add(paramDiscreteValue);
                paramFields.Add(paramField);


                crViewer.ParameterFieldInfo = paramFields;
                crViewer.ReportSource = CRPT;


                MessageBox.Show("Crystal logged in.");
                CRPT.SetDatabaseLogon("dbusername", "dbpassword");
                rptcls.LogonCrystalReport(crViewer);

            }
            catch (Exception er)
            {

                MessageBox.Show(er.Message);
            }

此結構適用於我的示例。 您要做的就是登錄Crystal報表和報表路徑本身。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM