2013年1月3日 星期四

Crystal Report 隱藏 / 顯示

不得不說... CR的中文翻譯真的很鳥 , 很多時候看英文原文可能還比看中文還簡單易懂, 例如這個抑制顯示就是很好的例子 , 簡單來說就是 ... 隱藏.
但是在CR裡面要隱藏有很多方法 , 以下擷取CR的線上文件

[區段專家] 中有三種屬性可以用來設定隱藏報表區段。
  • 隱藏 (可擷取細目)

隱藏屬性可隨時在報表執行時隱藏區段。例如,在摘要報表中可使用隱藏屬性來僅顯示摘要,而不顯示摘要背後的細目。當區段上套用隱藏屬性時,若使用擷取細目資料指標來擷取區段內容的細目,就看得見該區段。這項屬性是絕對的;不能使用公式來設定套用的條件。

  • 抑制顯示 (無擷取細目)

抑制顯示屬性也可以在報表執行時隱藏區段。但 [抑制顯示] 屬性不像 [隱藏] 屬性,不能在套用後擷取細目來顯示區段內容。這項屬性可以用絕對的方式來套用,或使用公式來設定套用的條件。這對撰寫信件而言很有用;例如,您可能會在信件中建立兩個 [細目] 區段:當銷售量達到或超過 $X 時抑制顯示其中一個區段,當銷售量低於 $X 時則抑制顯示另一個區段。

  • 抑制顯示空白區段

抑制顯示空白區段屬性可隨時隱藏沒有物件的區段。如果將某個物件放入區段中,而且它會在報表中產生數值,這個物件就會顯示出來。

重要的是第二部分 , 因為第一部分主要是給區段用的...詳細效果我也不太理解 , 至於第二部分就很簡單易瞭了.可以利用給予以個條件讓他選擇要顯示還是隱藏這個物件 , CR性質跟VB很相似,你可以對特定物件撰寫條件或是函示,更可以對特定屬性撰寫條件或是函式,例如今天我要讓一個物件是否出現,我可以利用以下方法
  1. 右鍵物件 > 欄位格式設定 > 一般 > 按下抑制顯示後面的按鈕

  2. 接著出現公式工作區

  3. 在中央的部份加上你所要做的判斷就可 , 例如這邊我要用傳入參數來判斷是否顯示該物件 , 傳入參數為true則顯示物件 , 反之隱藏
If {?傳入參數} = true then
     false
Else
     true

這裡特別要注意的是 true 為隱藏 , false 則是顯示 , 至於true/false不用指定給物件或是屬性了, 直接這樣寫就好 , 因為我們是對該屬性撰寫條件... 對我這種沒用過VB的人真的很不習慣 ... 程式幫忙做太多事情了, 反倒邏輯上會覺得怪怪的

2 則留言:

  1. 多謝版大的心得分享
    另想請問大大,像我如果是一個文字物件要如何寫抑制顯示公式?
    如 " 自{A} 時 至 {B}時 " 是一個文字物件
    若is not null會隱藏這一段,若有值才會顯示
    這樣又該怎麼寫呢?

    回覆刪除
    回覆
    1. 不好意思 我找到答案了 同樣的語法就可以解決 是因為我的Report資料表沒有更新的問題
      ( 已經開了Report 卻在DB下了update的語法 以至於Report "瀏覽資料" 裡面還是空值 )
      讓Report重新抓一次DB的Table就好了

      刪除