水晶報表連接Oracle做數據報表筆記


首先,新建一個水晶報表的文件,這個時候要給這個報表文件綁定一個oracle數據源,

選擇右側菜單的這個東西,選擇“數據庫專家”,打開之后是這么一個界面:

選擇建立新連接:

這個地方最關鍵,也是我為什么要寫這篇日志的原因。這里很坑,就是這里的服務一定要是Oracle安裝程序里的tnsnames.ora文件配置的節點的名稱,切記!

例如這個:

ALi=
  (DESCRIPTION=
    (ADDRESS=
      (PROTOCOL=TCP)
      (HOST=192.168.1.1)
      (PORT=1521)
    )
    (CONNECT_DATA=
      (SERVICE_NAME=mir)
    )
  )

這里的服務就要填寫ALi。然后再輸入相應的用戶名和密碼就OK了。

 第二章:參數

首先,水晶報表里面和RDLC一樣有參數字段,然后水晶報表的數據源里面寫自定義SQL的時候也是可以定義參數字段的。OK,那么問題來了,我們從.Net程序里傳入的參數字段是什么呢?

首先,你在數據源自定義的sql里面新增的參數,會自動在報表參數字段中相應的新增一個參數。然后你也可以自己在參數字段中新增參數。跟數據源綁定的參數最下角是有一個小標識的:

 最后,上完整的.Net端的代碼:

//實例化報表
            ReportDocument rpt = new ReportDocument();
            rpt.Load(Application.StartupPath + "\\Pan.rpt");

            //注冊數據源,如果不注冊則打開報表的時候會提示登錄
            TableLogOnInfo log = new TableLogOnInfo();
            log.ConnectionInfo.ServerName = "4160";
            log.ConnectionInfo.DatabaseName = "orcl";
            log.ConnectionInfo.UserID = "UserId";
            log.ConnectionInfo.Password = "XXXX";
            rpt.Database.Tables[0].ApplyLogOnInfo(log);

            //為報表控件綁定報表
            this.crystalReportViewer1.ReportSource = rpt;

            //設置參數,這里需要三個變量,對應的報表中每一個參數都可以傳入多個值
            ParameterFields t = new ParameterFields();
            ParameterField paramField = new ParameterField();
            ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue();
            ParameterValues paramValues = new ParameterValues();
            paramField.ParameterFieldName = "ProductId";
            paramDiscreteValue.Value = "PA01010020";
            paramValues.Add(paramDiscreteValue);
            paramField.CurrentValues = paramValues;
            t.Add(paramField);
            this.crystalReportViewer1.ParameterFieldInfo = t;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM