2012-05-16 336 views
0

我不能夠基於以下代碼載入此報表:「您請求的報告需要進一步的信息」將值傳遞給水晶報表

 ReportDocument crystalReport = new ReportDocument(); 
     ParameterField paramField = new ParameterField(); 
     ParameterFields paramFields = new ParameterFields(); 
     ParameterDiscreteValue paramDiscreteValue = new ParameterDiscreteValue(); 

     paramField.Name = "Param"; 
     paramDiscreteValue.Value = TextBox1.Text.ToString(); 
     paramField.CurrentValues.Add(paramDiscreteValue); 
     paramFields.Add(paramField); 

     CrystalReportViewer1.ParameterFieldInfo = paramFields; 
     crystalReport.Load(Server.MapPath("CrystalReport.rpt")); 
     crystalReport.SetDatabaseLogon("username","password","servername","db"); 
     CrystalReportViewer1.ReportSource = crystalReport; 

它只是說我通過它報告所需的參數以及用戶名,密碼,服務器和數據庫。任何建議都會有幫助。謝謝!

+0

該報告是否包含子報表?如果是這樣,你有沒有設置他們的參數? – craig

+0

不,只有一個報告。 – kjaenick

回答

3

我正在自己這樣做,所以我分擔你的痛苦。

我: -

CrystalReportSource1.ReportDocument.SetParameterValue(fieldNo, fieldValue); 

fieldNo有來自迭代: -

CrystalReportSource1.ReportDocument.DataDefinition.ParameterFields 

這似乎爲我的報告工作。

順便說一句不同的版本對fieldValue的類型有不同的挑剔程度。

克雷格說,你需要設置報表參數,雖然同樣你需要確保你設置鏈接參數的值。

可以檢測連接paramters有: -

bool linked = CrystalReportSource1.ReportDocument.DataDefinition.ParameterFields[fieldNo].IsLinked();