クリスタルレポートPull方式データベースログイン問題解決方式2
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