SSRS URL参数不会设置

时间:2010-12-17 22:25:58

标签: c# asp.net sql-server reporting-services

我在网络表单中有以下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参数(两者都是多选)。

以下是参数页面的外观: parameters

5 个答案:

答案 0 :(得分:2)

您是否在报告中使用了多个数据集?如果是这样,请尝试将数据集设置为串行执行:

  1. 在报表设计器中打开数据源对话框
  2. 选中“使用单一交易”复选框
  3. 您可以尝试其他一些问题排查步骤:

    • 尝试从查询字符串中删除报表服务器命令“& rs:Command = Render”,看看会发生什么。
    • 此外,如果您将Viewer Command更改为true,您是否能够至少看到参数已正确填充(即:“& rc:Parameters = true”?

答案 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'”。

所以,我回到了报告服务器。通过删除参数依赖项重新部署报告。有效。 : - )