中間データセットを使用する必要がないため、レポートがプログラムによって指定するデータソースを変更することができます。レポートの各テーブルを調べ、データソースを更新するだけです。
はコードの下を参照してください:
から撮影
using System;
using System.Windows.Forms;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
ReportDocument cryRpt = new ReportDocument();
TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Tables CrTables ;
cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt");
crConnectionInfo.ServerName = "YOUR SERVER NAME";
crConnectionInfo.DatabaseName = "YOUR DATABASE NAME";
crConnectionInfo.UserID = "YOUR DATABASE USERNAME";
crConnectionInfo.Password = "YOUR DATABASE PASSWORD";
CrTables = cryRpt.Database.Tables ;
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = crConnectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
}
crystalReportViewer1.ReportSource = cryRpt;
crystalReportViewer1.Refresh();
}
}
}
:http://csharp.net-informations.com/crystal-reports/csharp-crystal-reports-dynamic-login.htm
データベースコールからレポートを取り込みたいとします。中間データセットにデータをロードする必要がありますか?または、データベースからレポートを直接取り込むことができますか? –
私はデータベースから切り離したいので、configファイルの接続文字列からデータソースを簡単に制御できます。 –
私はあなたが接続文字列からデータソースを制御できるようにするソリューションを投稿しました。それで十分でないかどうか私に教えてください。 –