クリスタルレポートPull方式データベースログイン問題解決方式2

4223 ワード


Pullは、クリスタル・レポートでデータベースに直接接続し、ストアド・プロシージャ==
 
Webアプリケーションを例としてまず、Aspを新規作成する.NetCrystalReportsサイトは少し待ってからデフォルトのクリスタルレポートウィザードが出てきます.確定したら、「新しい接続を作成する」を選択します.ここで私はOracleデータベースを使っています.データベースパラメータを記入して接続に成功します.データベースの表が表示されます.必要な表を選択して、右のボックスに点をつけて次のインタフェースに入ります.表示するフィールドポイントを右のボックスに直接「完了」(後でいくつかのステップがありますが、しばらくは使用しません)してテンプレートインタフェースに入るのはデータベースに直結しているので、すぐに実際の効果を見ることができます.ポイントテンプレートの下の「メインレポートプレビュー」では、私たちはコードを作成していません.運転してみてください.このヒントがあり、入力ボックスは入力コードを登場させない(実質的にはコードにもいくつかの書き方があるが、原理は基本的に同じで、ここでは直接そのまま運ぶことができ、後でよく知ってから自分で試してみよう)
C# code

using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using CrystalDecisions.Shared; using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Web; public partial class _Default : System.Web.UI.Page { // private ReportDocument myReport; private void ConfigureCrystalReports() { // ReportDocument , Crystalreport1.rpt myReport = new ReportDocument(); string reportPath = Server.MapPath("Crystalreport1.rpt"); myReport.Load(reportPath); // ConnectionInfo connectionInfo = new ConnectionInfo(); connectionInfo.DatabaseName = "user"; connectionInfo.UserID = "pwd"; connectionInfo.Password = "****"; connectionInfo.ServerName = "myoraServer"; // SetDBLogonForReport(connectionInfo, myReport); // CrystalReportViewer1 CrystalReportViewer1.ReportSource = myReport; } private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument) { Tables tables = reportDocument.Database.Tables; foreach (CrystalDecisions.CrystalReports.Engine.Table table in tables) { TableLogOnInfo tableLogonInfo = table.LogOnInfo; tableLogonInfo.ConnectionInfo = connectionInfo; table.ApplyLogOnInfo(tableLogonInfo); } } // : Page_Init Page_Load //VS2008 Page_Init private void Page_Init(object sender, EventArgs e) { ConfigureCrystalReports(); } }


もう一度運転してください.
簡単でしょう、ほほほ.
コード内のデータベース接続を変更することで、異なるデータベースに切り替えることができます.
ターゲット・ライブラリで使用されるテーブル名と構造が同じであることを前提とします.
よくある質問:
現れる
この図のヒント
一般的には、データベース情報の入力エラーやデータベースのダウンタイムによるものです.
予告:PUSHモードのテンプレート操作
PS:
より簡単な方法:
C# code

// myReport.SetDatabaseLogon("user", "pwd", "server", "db"); // myReport.Subreports[0].SetDatabaseLogon("user", "pwd", "server", "db");

 


public static void Login(ReportDocument report) {             string serverName = ConfigurationManager.AppSettings["CrystalDBServerName"];             string userId = ConfigurationManager.AppSettings["CrystalDBUserID"];             string passWord = ConfigurationManager.AppSettings["CrystalDBPassWord"];             string CrystalDB = ConfigurationManager.AppSettings["CrystalDB"];
            report.SetDatabaseLogon(userId, passWord, serverName, CrystalDB);
           //Set Database Logon to subreport             foreach (ReportDocument subreport in report.Subreports)             {                 subreport.SetDatabaseLogon(userId, passWord, serverName, CrystalDB);             } }
 
参照:http://topic.csdn.net/u/20090626/17/8090bf70-bed9-41ac-9e09-c0a6a7ab4cb8.html?49881