2013-07-16 125 views
0

我想創建一個工資表報表,用戶可以根據用戶需要選擇或取消選擇列。例如,對於每個員工,用戶可以選擇表示列表中每列的複選框,例如 - Nic,淨工資,Nopay日等等。我認爲所有列都在SP中返回,並且只顯示選定的列。可以請您給我一些想法如何做到這一點..在運行時選擇或取消選擇報表列表

+0

可以抑制根據這些參數報表中的每個列(和頭),但我不覺得那麼你就可以改變你的剩餘列坐在一起。幾年前,我解決了這個問題,最終創建了一個新的演示應用程序,允許進行這種級別的自定義,因爲我無法弄清楚如何在運行時調整報表佈局。 – Zec

+0

是否有任何演示應用程序,我可以得到? – TAB

回答

0

提拉。我不知道你可以得到一個水晶報表演示應用程序,這會讓你的工作變得更容易,但如果你被選擇寵壞了,我不會感到驚訝。 SAP提供的報表服務軟件及其在Dashboard Design和Crystal Server上的資料可能值得一看(SAP Crystal Reports)。然而,這可能是爲你的目的矯枉過正。

的另一種方法是試圖定義「鬆散」的列(我不知道專業術語!)。我清楚地記得幾年前取消了這一點,但不記得具體情況,也無法再訪問該報告(以前的僱主)。 This article包括步驟。這是醜陋的,並有一系列的缺點(巨大的差距,列被壓制成​​一個巨大的差距),但它可以解決你的問題。

This guy在他的報告創建通用列然後建立自己的飛行查詢。他的表格只針對一個報告,但我認爲你可以調整他的解決方案以適應你的需求。

Cross-tabs可能被利用,以滿足您的需要(我認爲)。我幾乎沒有這些經驗,但似乎有點調整可能允許動態列。

更好的選擇(到目前爲止)是在你的演示文稿中處理這個問題。你已經標記了WinForms和C#,所以我可以假設你已經創建了一個帶有報告查看器的win應用程序。假設您在報告中定義數據集,您的代碼應該能夠通過查看報告的DataDefinition來處理在運行時創建列(或抑制/啓用和重新定位)。我讀過在運行時創建列有點依賴於你的CR/VS版本,我只能猜測。

希望這會有所幫助。

+0

謝謝你的簡短回覆,我會盡量鍛鍊你的建議 – TAB

+0

如果我能基於複選框值,那麼上面的需求量的可實施surpress列沒有?(SP返回的所有列) – TAB

+0

是的,這_can_可以這樣做的方式,你的輸出只會有很大的差距。抑制列並不意味着它的右邊的列將移動以填充新清空的空間。這篇文章(「這個人」)展示瞭如何快速構建查詢並將其應用於通用佈局將避免該問題。如何修改它以適應您的情況至少部分取決於查詢的複雜程度。無論您的存儲過程是否在別處使用,也是一個考慮因素 – Zec

0

如果你可以縮小選擇列的組合在可管理的最低限度,你可以爲每種組合創建一個子報表和抑制,除了正確的所有子報表。

相關問題