2013-02-28 34 views
14

我正在構建報告,希望接受來自用戶的兩個值,將這些值填入查詢中,並查找與之關聯的數據那些條目。獲取「運行報告所需的一個或多個參數尚未指定」錯誤

例如,如果您有員工,績效度量和與這些相關的值的列表;那麼用戶會選擇一個員工姓名/表現指標,並且他們會得到該員工對該指標的評分信息。

我有兩個參數,每個參數都是從SQL查詢中獲得一個明確的員工姓名和度量列表,下面的表格只是根據〜'WHERE name = @Name AND measure = @Measure'來提取信息,但是當我點擊'預覽'來在本地運行報告時,我得到錯誤:「運行報告所需的一個或多個參數沒有指定」

我知道參數工作正常,因爲我可以將它們的值直接輸入到一個文本框和值填充正確。此外,如果我將查詢更改爲僅接受一個參數(即WHERE measure = @Measure),查詢就可以工作。

我很困惑,爲什麼會出現這個錯誤,因爲我知道我的參數正在運行並正確填充。

+0

我也得到了這個,但通過在這裏使用答案解決了它:http://stackoverflow.com/questions/37556993/how-can-i-append-the-results-of-additional-queries-to -an-ssrs-report – 2016-06-16 22:49:02

回答

2

當您或者 a)參數在實際報告中拼寫錯誤時,會導致此錯誤。這意味着查詢期待@Name,但報告正在傳遞@Names(或其他拼寫)。

二)是否有可能你正試圖運行與NULL的參數@Name但存儲過程的默認值,報告要求的實際值?

如果您在Visual Studio中構建報表並將@Name參數的默認值爲(null),則可能會發生這種情況。嘗試刪除默認值或確保@Name參數具有實際值,即使它只是「'。

+0

這是如此令人沮喪。該參數拼寫正確,我不允許默認值。我只是嘗試允許一組默認值,並且報告將運行一次,但是當您更改參數並單擊「查看報告」再次運行時,該錯誤會再次出現。 – user2061929 2013-03-01 14:42:23

+0

我可以單獨運行任一參數上的查詢(拉出與度量關聯的所有名稱,或通過名稱拉出),但是在我的查詢中,我將它們組合在一起的那一分鐘我收到錯誤消息。 – user2061929 2013-03-01 14:44:40

+0

我的查詢很簡單:「SELECT columns FROM table WHERE name = @sName AND measure = @mType」我真的不知道爲什麼我看到這個錯誤。 :/ – user2061929 2013-03-01 14:46:41

4

這讓我痛苦很多。原來,這與使用共享數據集有關。 將數據集嵌入到報告中,而且工作正常。

+0

此答案不正確,數據集是否共享與問題無關。 – DonBecker 2013-09-12 18:49:48

+1

@唐貝克爾相信與否,我經歷了與OP所描述的完全相同的問題以及我描述的修復(我在另一個論壇中發現的修復)在我的情況下解決了這個問題。我主要在這裏留下評論來阻止其他人開始我所做的同樣的野鵝追逐。 – 2013-09-13 12:45:01

+0

我可以想到,這將解決數據集問題的唯一方法是,如果您的數據集定義不知何故損壞。任何機會,你可以重現和驗證? – DonBecker 2013-09-13 16:46:46

7

我在使用本地報告(在.rdlc文件中)的.NET 4.0中遇到過這種情況,其中一個參數的值包含一個無效字符串。雖然設置參數是正確的:

report.SetParameters(
      new List<ReportParameter> { 
       new ReportParameter("Title", Messages.Title), 
       new ReportParameter("SubTitle", Messages.Subtitle)) 
      } 
      ); 

它的工作只是只要這兩個參數實際上包含一些字符,否則提到的異常被拋出。

+5

在參數屬性中允許爲null將解決此問題。 – UMAR 2014-02-14 19:40:22

1

我有同樣的問題,它現在在sql server 2008 r2上排序。

我知道這現在是一個老問題, 但只是爲了幫助別人:

這是真的很簡單,只是確保包括案件的拼寫是相同的,使用的@。

我有一個名爲currentSpaceByDrive用下面的代碼共享數據集:

SELECT 
    [DRIVE] 
    ,[Volume_Size_GB] 
    ,[VolumeSpaceAvailable_GB] 
    ,[VolumePercentAvailable] 
FROM monitoring.dbo.currentSpaceByDrive(@ServerID) 

我的共享數據集currentSpaceByDrive添加到我的報告,我給它相同的名稱。 當我右鍵點擊它時,我的報告,數據集屬性中的參數是@ServerID。

@ServerID值來自另一個數據集,稱爲the_servers(其中用戶選擇一個服務器ID)

我有一個報告的參數也稱爲@ServerID從the_servers獲取其值,並用於饋送@ServerID參數在currentSpaceByDrive上。

我知道太多的@ServerID,但是如果你基於這個做了你自己的測試,你就會完成它。 見附圖。

希望這有助於 馬塞洛

enter image description here

+0

謝謝!這對我有效。 – 2017-03-23 19:32:56

1

檢查數據集在報表服務器,我有類似的問題,我是編輯共享數據集在Visual Studio中,但它沒有工作,沮喪的一小時後我在報表服務器中檢查了數據集,發現它並沒有使用visual studio中的更改進行更新,我從Visual Studio中刪除它並重新部署數據集。有用 。

0

其實我只好:

  • 從報告中刪除子報表對象。
  • 將新對象從工具箱
  • 設置子報表名稱,並報告
  • 在Paramateres「添加」,然後選擇每個參數,以及相關的價值。

然後是適合我的。

0

我有類似的問題。當您使用具有空值參數的SharedDataSource時,會發生問題。如果您在嵌入式數據源中使用相同的查詢,則沒有問題。

與embebed數據源不同,您必須定義在共享數據源查詢中使用的參數是否允許具有null值,如屏幕截圖中突出顯示的那樣。在我的情況下,查詢共享數據源時有兩個參數,可以有空值。

Set Allow Null for SharedDataSource Parameter(s)

所以將它們設置爲允許空後,問題解決!

相關問題