0

我需要在報告傳遞到存儲過程之前修改報告中多值參數(由運行時通過文本框提供給最終用戶)的值。因此,例如,如果用戶輸入一個像'4444123'這樣的數字,那麼我應該能夠在開始時填充零,並使其長度等於10即ie。 '0004444123'。在傳遞到SSRS中的存儲過程之前更改參數值

但是,如果用戶輸入類似'AA4545'的東西,那麼在這種情況下,該值需要按原樣傳遞。總之,如果數值以一個數字開始,然後用額外的零填充,否則不會改變

我一直在考慮使用一些自定義代碼,但不能找出一種方法來返回值存儲過程。目前無法通過SQL處理它。

+0

給出的功能,如果用戶輸入4444A12怎麼會做解決了這個問題。意味着從數字開始,但有字母。這裏需要用零填充或保持原樣? – Arulkumar

+0

不會有像這樣的輸入,如果它以數字開頭,那麼整個值將是數字 – PratikGandhi

回答

0

如果我的理解是正確的,您希望在執行報表之前修正報表參數值的最終用戶輸入?也許下面可以解決你的問題:

  • 空白報表(主報表)的輸入參數
  • 嵌入一個子報告到主報告
  • 使用表達式來固定參數,然後把它傳遞到子 報告

但是,是否從外部應用程序調用報告?如果是這樣,參數值應該由應用程序處理,而不是報告。

0

您可以將此自定義代碼功能放在報告 - >報告屬性 - >代碼中。在StrDup的幫助下,您可以實現您的要求。我正在檢查你的第一個字符是否是數字。如果數字填充爲零,則不是簡單地返回傳遞的參數值。

功能代碼爲:

Function ConvertMutiValue(ByVal multivalue As String) As String 
    Dim firstChar As String 
    firstChar = LEFT(TRIM(multivalue), 1) 

    Dim returnText As String 
    returnText = multivalue 

    IF IsNumeric(firstChar) Then 
     returnText = StrDup(10 - Len(multivalue), "0") + multivalue 
    END IF 

    Return returnText 
End Function 

,並調用集屬性裏面的功能 - >參數 - >參數值的表達。我假設Multivalue是你的參數名稱。

示例截圖供您參考。

enter image description here

+0

它會拋出一個錯誤,說'從Object()類型轉換爲類型'String'無效'。 – PratikGandhi

+0

你可以試試這個函數ConvertMutiValue(BYVAL多值作爲參數)作爲字符串。我提到'多值'作爲'參數'而不是'字符串' – Arulkumar

+0

nope,即使這不起作用; 「類型'Microsoft.ReortingServices.ReportProcessing.ReportObjectModel.Parameter'的值不能轉換爲'String''' – PratikGandhi