我在网络表单中有以下c#代码:
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string url;
string startdate;
string enddate;
string costcenter;
string account;
//url = "http://server/reportserver?/Finance/Cost Spending/Cost Center Details&rs:Command=Render&rc:Parameters=false";
url = "http://server/reportserver?/Finance/Cost Spending/Cost Center Totals&rs:Command=Render&rc:Parameters=false";
costcenter = "&costcenter=990";
startdate="&startdate=" + Convert.ToString(txtStartDate.Text);
enddate = "&enddate=" + Convert.ToString(txtEndDate.Text);
account="&account=" + Convert.ToString(GridView1.SelectedRow.Cells[1].Text);
url =url + startdate + enddate + costcenter + account;
//TextBox1.Text = Convert.ToString(GridView1.SelectedRow.Cells[1].Text);
Response.Redirect(url, false);
}
我已经针对另一个报告测试了这个代码的非常类似的版本,唯一不同的是costcenter参数。另一个报告运行正常,但每次运行此代码时我都会收到错误:“'costcenter'参数缺少值”。我唯一能想到的是两个报告之间存在显着差异的是,在Cost Center Totals报告中,costcenter参数用于填充accounts参数(两者都是多选)。
以下是参数页面的外观:
答案 0 :(得分:2)
您是否在报告中使用了多个数据集?如果是这样,请尝试将数据集设置为串行执行:
您可以尝试其他一些问题排查步骤:
答案 1 :(得分:1)
我的印象是,在Web服务器上运行报告和在代码中运行报告之间的区别在于,在代码中它不会对参数的“可用值”查询感到烦恼。在代码中,您不是从下拉列表中选择一个人类可读的标签,然后传入相应的值。相反,您只需为参数提供值。
那么,您是否尝试过根本不指定成本中心参数?如果帐户参数是报告的所有记录集真正基于,那么设置它可能是多余的。
<强>更新强>
自从我最初写这篇答案以来,我已经了解到依赖参数(至少在SSRS 2008中)必须在它们所依赖的参数之后。确保以合理的方式订购参数。
看起来这就是你所做的,我只是想提一下这种可能性。
答案 2 :(得分:1)
检查Costcenter 990是否在您的数据库中!
我做了一些测试。我有一个表“Person”有4行和PersonID 1到4.如果set&amp; PersonID = 5表示所需的单值参数“&amp; rc:Parameters = true”那么我得到一个下拉框,所以我可以选择4个有效人之一。
如果我使用“&amp; rc:Parameters = false”设置&amp; PersonID = 5,那么我会收到消息“PersonID参数缺少值”。
答案 3 :(得分:0)
好的,我想出了这个问题,感谢艾莉森对参数/数据集的捅。发生的事情是我有4个参数,开始日期,结束日期,成本中心和帐户。在报告中,帐户数据集依赖于成本中心参数来填充下拉列表。我创建了报告的副本,删除了成本中心参数,并从帐户参数中删除了数据集。我更新了代码并运行它和BAM!它奏效了。
答案 4 :(得分:0)
我遇到了类似的问题。删除参数依赖项使其工作。我有参数B取决于参数A.它直接访问报表服务器时工作正常。但是,当我尝试以编程方式将其绑定到报表查看器控件时,即使在使用ReportParameter
提供参数并添加到参数列表之后,也只是说“缺少'参数B'”。
所以,我回到了报告服务器。通过删除参数依赖项重新部署报告。有效。 : - )