2

レポートにパラメータを渡そうとしています。さまざまな方法を試しましたが、毎回パラメーター値の入力を求められます。同様の問題をたくさん読みましたが、何もうまくいきませんでした。

P_REQUEST_IDレポート内のデータをフィルター処理するために使用される静的な数値パラメーター フィールドです。

これが私のコードです:

// creating report
var reportDocument = new ReportDocument();
reportDocument.Load("ReportRequestPrice.rpt");

// creating report form 
var dialog = new FormReport();

// not working
var paramFields = new ParameterFields();
var paramField = new ParameterField();
var paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "P_REQUEST_ID";
paramDiscreteValue.Value = 1;
// not working
// paramDiscreteValue.Value = "1";
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
dialog.reportViewer.ParameterFieldInfo = paramFields;

/*
// not working
var param = new ParameterDiscreteValue();
param.Value = 1;
reportDocument.ParameterFields["P_REQUEST_ID"].CurrentValues.Add(param);
// not working
//reportDocument.ParameterFields[0].CurrentValues.Add(param);
*/

// setting datasource
reportDocument.SetDataSource(printshopDS);
reportDocument.Subreports[0].SetDataSource(printshopDS);

dialog.reportViewer.ReportSource = reportDocument;            

dialog.ShowDialog(this);
4

1 に答える 1

1

この問題は、Crystal Reports for Visual Studio 2005 で再現できます。回避策は、最初に CrystalReportViewer の ReportSource プロパティを設定し、次にプロパティ ParameterFieldInfo を介してパラメータ値を設定することです。したがって、コードは次のようになります。

// creating report
var reportDocument = new ReportDocument();
reportDocument.Load("ReportRequestPrice.rpt");

// creating report form 
var dialog = new FormReport();

dialog.reportViewer.ReportSource = reportDocument;            

// not working
var paramFields = new ParameterFields();
var paramField = new ParameterField();
var paramDiscreteValue = new ParameterDiscreteValue();
paramField.Name = "P_REQUEST_ID";
paramDiscreteValue.Value = 1;
// not working
// paramDiscreteValue.Value = "1";
paramField.CurrentValues.Add(paramDiscreteValue);
paramFields.Add(paramField);
dialog.reportViewer.ParameterFieldInfo = paramFields;


// setting datasource
reportDocument.SetDataSource(printshopDS);
reportDocument.Subreports[0].SetDataSource(printshopDS);


dialog.ShowDialog(this);
于 2014-03-04T06:44:43.387 に答える