2010-12-17 42 views
0

我有下面的C#代码的Web表单:SSRS URL参数将不设置

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

     } 

我已经测试此代码非常similer版与另一份报告,唯一的不同是在costcenter参数。其他报告运行良好,但每次运行此代码时,我都会收到错误消息:“'costcenter'参数缺少值”。我可以想到的是,这两份报告之间唯一不同的是,在“成本中心总计”报告中,costcenter参数用于填充accounts参数(均为多选)。

这里的参数页面的样子: parameters

+0

感叹,我猜这里没有人知道.... – DForck42 2011-02-15 15:30:53

+0

你使用的是什么版本的SSRS? – 2011-02-15 16:29:04

+0

只是疯狂的猜测,在url字符串中是Parameter = false导致这种行为的任何机会? – tzup 2011-02-15 16:35:43

回答

0

好的,我明白这个问题要归功于艾莉森在参数/数据集上的捅捅。发生了什么是我有4个参数,开始日期,结束日期,成本中心和帐户。在报告中,帐户数据集依赖成本中心参数来填充下拉列表。我创建了一份报告副本,删除了成本中心参数,并从帐户参数中删除了数据集。我更新了代码,并运行它和BAM!有效。

+0

不错!真高兴你做到了。 – 2011-02-17 17:51:48

1

我一直的印象是运行在Web服务器上的报告,并在代码中运行它之间的一个区别是,在代码中它不与理会“可用值”查询参数。在代码中,您并未从下拉列表中选择可读的标签,然后传入相应的值。相反,您只需将参数值提供给该参数。

那么,你有没有尝试过没有指定成本中心参数?如果account参数是报告的所有记录集确实基于此,则设置它可能是多余的。

更新:

自从我写这个答案的时候本来我学到了相关的参数(至少在2008年SSRS)必须参数(S)他们是依赖于后。确保您的参数以合理的方式排序。

看起来你就是这么做的,我只是想提一下这个可能性。

+0

是的,我得到同样的错误。 “'costcenter'参数缺少一个值” – DForck42 2010-12-27 16:31:03

2

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

  1. 公开赛在报表设计器的数据源对话框
  2. 选择“使用单交易”复选框

其他一些故障排除步骤,你可以试试:

  • 尝试从查询字符串中删除Report Server命令“& rs:Command = Render”,看看会发生什么。
  • 另外,如果你改变浏览器命令为true,你至少能够看到这些参数是正确填充(即:“& RC:参数=真正的”
+0

我会看看这个,谢谢 – DForck42 2011-02-15 18:43:29

+0

我不知道你在说什么数据源对话框。此外,该项目在2010年,但报告是SSRS 2005. – DForck42 2011-02-17 16:23:01

1

检查Costcenter 990在你的数据库中!

我做了一些测试,我有一个表格“Person”,有4行,PersonID为1到4.如果设置& PersonID = 5对于所需的单值参数“& rc:Parameters = true“,那么我会得到一个下拉框,以便我可以从4个有效人员中选择一个。

如果我设置& PersonID = 5并且“& rc:Parameters = false”,那么我会收到消息“PersonID参数缺少一个值”。

+0

990存在,这是我一直在测试报告和存储过程的主要价值。 – DForck42 2011-02-16 14:22:52

+0

您对costcenter参数的“可用值”有什么要求?它看起来像我990不是可用的值之一。请记住,它是将要比较的值字段,而不是标签字段。 990是ID还是costcenter的名称?如果它是ID,最好使参数成为一个整数。如果这没有帮助,请尝试在浏览器URL栏中将costcenter参数的某些值黑入,直到报表显示为止! – Fillet 2011-02-16 15:07:14

+0

要检查可用值,您需要查看报告代码,或者执行Alison建议的设置rc:Parameters = true。 – Fillet 2011-02-16 15:12:59

0

我面临类似的问题。删除参数依赖关系使其工作。我有参数B取决于参数A.它直接访问报表服务器时工作得很好。但是,当我尝试以编程方式将其绑定到报表查看器控件时,即使在使用ReportParameter提供参数并添加到参数列表后,它仅仅是说“参数B'丢失了”。

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

+0

太棒了!你是从这里弄出来的,还是自己搞砸了? – DForck42 2011-03-09 16:49:25