none
*.rdlc 報表 運算式加總問題 RRS feed

  • 問題

  • 開發工具版本-Visual Studio 2005

    開發環境-Web Form

    資料庫─ SQL Server 2005

     

    您好:

    在 Web Form 使用 *.rdlc 報表, 資料如下:

    Columns        TypeFields        ValueFields

                               A                     10

                               A                     20

                               B                      5

                               C                     35

                               A                      3

     

    我想在報表最下方列出 A 及C 的 ValueFields 加總

    所以我使用運算式 : Sum(IIF(Fields!TypeFields.Value="A" OR Fields!TypeFields.Value="C", Fields!ValueField.Value,0))

    雖然報表有跑出來, 但是欄位上的值是 "#錯誤" ; 請問是我的運算式下錯了嗎 ?

     

    2008年4月2日 上午 10:28

解答

  •  

    LOLOTA 及 tihs : 感謝兩位的回覆, 我已經找到答案了, 原因是沒有轉換型態, 只要這樣寫就行了

    Sum(CDbl(IIF(Fields!TypeFields.Value="A" OR Fields!TypeFields.Value="C", Fields!ValueField.Value,0)))

    2008年4月3日 上午 07:56

所有回覆

  • Sum(IIF(Fields!TypeFields.Value="A" OR Fields!TypeFields.Value="C", Fields!ValueField.Value,0))

    您的寫法錯了, 您可以考慮改成:

     

    Sum(IIF(Code.MyFun(Fields!TypeFields.Value) = true, Fields!ValueField.Value,0))

     

    Code.MyFun是自己在rdlc中寫的程式碼。

    2008年4月2日 上午 10:38
    版主
  • LOLOTA 您好, 感謝您的回覆, 我寫了一支 Function程式如下

    Public Function GetCode(sDealType as String) AS Boolean
     IF sDealType="A" or sDealType="C" THEN
      RETURN true
     ELSE
      RETURN false
     END IF
    End Function

     

    然後在 運算式欄位中輸入

    =Sum(IIF(Code.GetCode(Fields!TypeFields.Value),Fields!ValueField.Value,0))

     

    但跑出的結果仍然為 "#錯誤"

    但我發現, 我在輸入運算式的時候 GetCode 下方是有紅色底線, 是不是Repoft 沒有參照到我的 Function ? 還是我的 Function 有寫錯 ?

    2008年4月3日 上午 02:18
  • HI,

     

    您必須使用滑鼠的右鍵點中報表編輯區以外的灰色區域,然後選擇[屬性]功能, 再把您的Function寫在[程式碼]頁籤, 不能寫在一般的類別中

     

    tihs

    2008年4月3日 上午 03:43
  •  

    tihs 您好: 感謝您的回覆, 是的! 我是在 "報表屬性" 的 "程式碼" 頁纖內 撰寫上述程式碼,

    為了測試 Report 是否參照得到我的 Function 所以我寫了一個

     

    Public Function GetCodeA() AS String

    Return "A"

    End Function

     

    然後在運算式內寫上 =Code.GetCodeA() , 結果是跑得出 "A" 這個字的, 所以說 Report 找得到我的 Function , 但我不清楚為什麼 =Sum(IIF(Code.GetCode(Fields!TypeFields.Value),Fields!ValueField.Value,0)) 會出現 "#錯誤" .

    2008年4月3日 上午 04:23
  •  

    LOLOTA 及 tihs : 感謝兩位的回覆, 我已經找到答案了, 原因是沒有轉換型態, 只要這樣寫就行了

    Sum(CDbl(IIF(Fields!TypeFields.Value="A" OR Fields!TypeFields.Value="C", Fields!ValueField.Value,0)))

    2008年4月3日 上午 07:56