我一直在向C#移植一個VB應用程序。除此之外,所有水晶報告均可使用。我已經調試過,驗證了參數名稱,並且遵循了我在這裏找到的信息。無論我嘗試過什麼,我都會收到錯誤「Missing Parameter Values」。當我嘗試ExportToStream(ExportFormatType.PortableDocFormat)
並保存爲PDF時,會發生錯誤。參數都是字符串。當我調試時,6個未鏈接的參數中的每一個都會在rptParams.ContainsKey(def.name)
塊內命中。有7個子報表只有鏈接參數。c#將參數傳遞給水晶報告錯誤「缺少參數值」
我正在設置數據源之前設置參數。
我曾嘗試:
ParameterFieldDefinitions parmFields = rpt.DataDefinition.ParameterFields;
ParameterValues pvals = new ParameterValues();
foreach (ParameterFieldDefinition def in parmFields)
{
if (!def.IsLinked() && rptParams.ContainsKey(def.Name))
{
ParameterDiscreteValue pval = new ParameterDiscreteValue();
pval.Value = rptParams[def.Name];
pvals.Add(pval);
def.ApplyCurrentValues(pvals);
}
}
這是在原有基礎上VB代碼:
我也試過:
foreach (ParameterFieldDefinition def in parmFields)
{
if (!def.IsLinked() && rptParams.ContainsKey(def.Name))
{
rpt.SetParameterValue(def.Name, rptParams[def.Name]);
}
}
這裏的事物的秩序:
using (SqlCommand cmd = new SqlCommand(job.sproc, con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 600; //10 min
foreach (KeyValuePair<string, string> p in sprParams)
{
cmd.Parameters.AddWithValue(p.Key, p.Value);
}
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
ReportDocument rpt = new ReportDocument();
rpt.Load(Path.Combine(RPT_LOCATION, job.repFileName));
rpt.Database.Tables[0].SetDataSource(ds.Tables[0]);
int i = 1;
foreach (string subReport in job.subReports)
{
using (ReportDocument srpt = rpt.OpenSubreport(subReport))
{
srpt.SetDataSource(ds.Tables[i++]);
}
}
ParameterFieldDefinitions parmFields = rpt.DataDefinition.ParameterFields;
ParameterValues pvals = new ParameterValues();
foreach (ParameterFieldDefinition def in parmFields)
{
if (!def.IsLinked() && rptParams.ContainsKey(def.Name))
{
ParameterDiscreteValue pval = new ParameterDiscreteValue();
pval.Value = rptParams[def.Name];
pvals.Add(pval);
def.ApplyCurrentValues(pvals);
}
}
}
只是一個更新:回來這一點,靠牆打我的頭連續幾天仍然沒有解決辦法。 – kyle