- PR -

クリスタルレポートのリフレッシュ時にパラメータ設定したい。

1
投稿者投稿内容
つちや
会議室デビュー日: 2006/05/09
投稿数: 10
投稿日時: 2007-05-02 10:37
VS2005に付属のクリスタルレポートを使用しています。
ReportViewerのリフレッシュボタンを押した際に
プログラムからレポートのパラメータ値を設定したいのですが、
パラメータ値の入力画面が表示されてしまいます。
どうしてなのでしょうか?

/* レポートのパラメータ設定用 */
private ParameterFields paramFields;
private string _所属課 = "開発課";
private string _社員番号 = "abc123";
private string _担当者名 = "";

private void crystalReportViewer1_Load(object sender, EventArgs e)
{
 SetReport();
}
private void SetReport()
{
 // データをセットする
 SqlConnection cn = new SqlConnection(Resource1.CntStr);
 SqlDataAdapter sda = new SqlDataAdapter();
 sda.SelectCommand = new SqlCommand();
 sda.SelectCommand.CommandType = CommandType.StoredProcedure;
 sda.SelectCommand.CommandText = "mt_印刷_一覧表";
 sda.SelectCommand.Connection = cn;
 cn.Open();

 rpDataSet RpDs = new rpDataSet();
 sda.Fill(RpDs, "T_一覧表");
 cn.Close();

 // パラメータ設定します(SetDataSourceより前)
 paramFields = new ParameterFields();
 R_ParamSet("社員番号", _社員番号);
 R_ParamSet("所属課", _所属課);
 R_ParamSet("担当者名", _担当者名);
 crystalReportViewer1.ParameterFieldInfo = paramFields;

 // レポート接続
 ReportDocument oRpt = new ReportDocument();
 oRpt.Load("C:\rpt\一覧表.rpt");
 oRpt.SetDataSource(RpDs);
 this.crystalReportViewer1.ReportSource = oRpt;
}
private void R_ParamSet(string name, string val)
{
ParameterField paramField = new ParameterField();
ParameterDiscreteValue discreteVal = new ParameterDiscreteValue();
paramField.ParameterFieldName = name;
discreteVal.Value = val;
paramField.CurrentValues.Add(discreteVal);
paramFields.Add(paramField);
}


//---ここでパラメータをクリアして、データを設定し直しているつもりですが、
//---リフレッシュを押すとパラメータ値の入力が聞かれてしまう。
private void crystalReportViewer1_ReportRefresh(object source, CrystalDecisions.Windows.Forms.ViewerEventArgs e)
{
 this.crystalReportViewer1.ParameterFieldInfo.Clear;
 this.crystalReportViewer1.ReportSource = null;
 _担当者名 = "○○さんが印刷します。";
 SetReport();
}
T_DRAGON_2000
会議室デビュー日: 2004/01/20
投稿数: 18
投稿日時: 2007-07-09 16:52
これの回答ってありましたか?

同様のことではまっているので回答を参考にしたいのです。
1

スキルアップ/キャリアアップ(JOB@IT)