2013-02-14 143 views
2

我想將參數傳遞給我的報告。我嘗試過不同的方式,但每次都會提示我輸入參數值。我讀了很多類似的問題,但沒有爲我工作。Crystal Report參數不起作用AGAIN

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); 
+2

指出「不工作」沒有幫助。 – 2013-02-14 00:51:36

+0

你讀過什麼,爲什麼它沒有工作,你收到任何錯誤消息,等等。? – 2013-02-14 01:16:27

+1

我剛剛修復了一個問題。 Crystal報表查看器具有一個名爲ReuseParameterValuesOnRefresh的屬性,該屬性爲False。將其設置爲True使參數正常工作。我猜在水晶代碼刷新的某個地方正在調用,因爲我嘗試手動刷新報告並在所有可能的地方設置參數而沒有結果。 PS沒有錯誤的消息。正如我寫的報告要求的參數值。 – karasi 2013-02-14 01:35:24

回答

1

問題可以與Visual Studio 2005的解決方法解決方法是首先設置的CrystalReportViewer的ReportSource屬性,那麼你通過設置的參數值的Crystal Reports複製屬性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);