2010-12-17 83 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