2009-10-12 69 views
1

我有一個連接到數據庫的水晶報告。這些信息來自的數據表相當大,我需要知道如何過濾信息。Crystal Reports - 從數據庫中過濾數據

我在我的報告中有一個字段需要一個需求列表。我從中拉出的數據表具有我不需要的其他部門的所有這些外部要求。
例如:

我只需要查看NY IT Office的服務信息。我的數據表中的列顯示了一切,如廚房服務,洗衣房,停車場,IT部門信息,最後是Office服務。有時候我從這些部門牽涉到的條目 - 但是我只關心我的部門。
那我怎麼能在我的領域放置一個過濾器,只顯示我需要看到我的具體部門,並不顯示其他信息?我嘗試過使用選擇編輯器......但是,如果我要告訴它不顯示廚房服務,它就不會顯示整個條目(即使我的部門參與其中)。

我不知道這是否清楚 - 但一些幫助使用這個該死的公式編輯器將不勝感激。

+0

我忘了提及 - 我無法以任何方式編輯數據庫!我只有讀取權限:( – yeahumok 2009-10-12 21:19:08

+0

我添加了屏幕截圖 – 2009-10-13 17:25:54

回答

3

把條件邏輯在細節部分的抑制部分:

  1. 打開節專家
  2. 選擇左側窗格中
  3. 詳細部分點擊怪異按鈕右側窗格(在「常用」選項卡下)禁止(無向下搜索)選項的權限。通常,按鈕上的文本會改變顏色以指示是否存在條件邏輯 - 紅色表示存在;藍色意味着沒有。 alt text
  4. 提供布爾語句如果部門不符合您的期望部門

這將在報告的詳細資料部分停止輸出,以評估爲真。如果您細分了細節部分,則必須爲每個小節設置此邏輯。

我注意到在Crystal Reports中支持這些東西的一個常見誤解是認爲Suppression/etc需要完全刷新帶有IF ... THEN的布爾語句 - 這不是必需的,您只需要實際的語句進行評估。

這可以在您可以放置​​在Crystal Report上的任何屬性上完成。

+0

我不是100%確定你的意思,但是在Suppression選項右邊的「怪異的按鈕」我沒有在我的Select Expert中看到這個---你使用Crystal Reports 10.0嗎? – yeahumok 2009-10-13 13:22:26

0

您可以通過存儲過程訪問數據,並在其中構建過濾器邏輯。

+0

如果他只對數據庫具有隻讀訪問權限,那麼他只能通過已存在的存儲過程訪問它 – David 2009-10-12 21:36:29

+0

他的有關訪問權限的評論在我回答後添加 – 2009-10-13 13:36:56

1

如果你有水晶的8.5之後任何版本,你可以使用幾乎任何你想要的SQL作爲命令源的報告,消除創建任何數據庫對象的必要性。

存儲在此需求字段中的內容是什麼?這聽起來有點像你每行有多個值。

編輯:好吧,因爲外地確實是多個值,還有你可以嘗試不同的東西。1)如果'Office Services'確實是唯一的(例如,'Main Office Services'和'Office Services'沒有條目),那麼你可以在你的記錄選擇公式中使用一個簡單的LIKE :

{tblData.MultipleValueField} LIKE "*Office Services*" 

2)如果你不能做這樣的假設,那麼你可以使用一個數組中的值拆分出來,然後測試的只是「辦公服務」的存在:

"Office Services" In Split({tblData.MultipleValueField}, ",") 

選項1可能會運行得更快,因爲過濾器將在服務器端完成,記錄數量減少虐待通過網絡發送。選項2將涉及Crystal進行過濾和更多網絡流量。 我希望其中一個符合您的要求。

+0

我正在使用Crystal Reports 10.0爲此,我試圖使用他們的SQL表達式編輯器......但它似乎有他們自己的奇怪的語法,我不能拿起它 數據表中的需求列是一個用逗號分隔符連接字段,我只是想讓它能夠提取我需要的內容,並禁止顯示其餘的信息 – yeahumok 2009-10-13 13:23:42

+0

SQL Expre SSION公式有點不同,我個人從未發現它們非常有用。查看我的與記錄選擇公式相關的編輯。 – MartW 2009-10-13 16:04:16