2013-01-22 87 views
1

我在創建.rdlc報告時遇到問題。本報告的要點是要顯示公交路線上的乘客人數(該路線上每個車站的乘客人數)。數據集充滿了一個存儲過程(我不能改變)。每條路線的數據由2部分組成 - 第一部分具有特定路線上的車站名稱(有列表示乘客人數,但它們的值爲空),第二部分包含乘客人數爲每個車站。這兩個部分都是同一存儲過程的結果,並且它們顯示在同一個表中。 我遇到的問題是每條路線有不同數量的車站。 所以我的問題是 - 我怎樣才能生成一個報告(或子報告),以適應特定路線上的車站數量(列數應該與路線上的車站數量相同)。重要的是要提到具有不同站數的路線應顯示在同一報告上。 我使用VS 2010和C#創建生成此報告的應用程序。 你能幫我解決這個問題嗎? 謝謝創建具有可變列數的rdlc報告

例子 不幸的是,我不被允許公開具體的數據,但我會盡我所能給你提供必要的信息。 存儲過程的結果具有以下結構: Route_ID | Departure | DataType | StationName | Passengers1....Passengers61 報告按Route_ID進行分組。 DataType值定義該行是否包含電臺名稱(結果的第一部分)或乘客人數(第二部分)。例如,如果路線有3個站點和1個出發點,則該組將有4行 - 前3個將包含Route_ID,DataType和StationName(每行有不同的StationName,前2個參數將相同),其他列將具有空值。第二部分由Route_ID,DataType(不同於前一部分)和乘客列中的值組成(其他列將爲空)。所以我需要有一個子報表,它具有與第一部分具有相同行數的相同數量的列。我知道這很複雜,但是整個問題非常複雜。

+0

如果我是正確的,你正在尋找的東西,如:BUS 1:stationA 5人; stationB 6人| BUS2:stationA 2人; B站3人; stationC 12人,站數是多少? – Deruijter

+0

是的,你是正確的 – NDraskovic

+0

聽起來你應該在使用它之前格式化數據,我編輯了我的答案並提供了一些可能對你有幫助的鏈接。 – Deruijter

回答

1

可能不是您想要聽到的答案,但在RDLC中動態創建列相當困難(至少我無法使其工作)。

如果可能的話,我建議這個(有點不乾淨)解決方案: 儘可能多的電臺創建表作爲是可能的:

BUS | StationA | StationB | StationC | StationD | .. 
X9Z | 4 people | 5 people | 0 people | 9 people | .. 

然後能見度表達式添加到每個站列即iif(StationB > -1, true, false)。 只有在設定值時才顯示列。當然,這意味着你必須提前定義所有站(並維護它們)。所以,如果你有50個電臺,那將是背後的痛苦。

替代

如果你有很多站我個人建議尋找一些其他的報表生成,如Crystal Reports(請注意,我沒有經驗,我自己,雖然它越過我的路徑時,往往搜索RDLC解決方案)。

格式的數據

閱讀您的編輯之後,它聽起來像你的數據集的結構不是很實用。我會建議填寫一個更符合你想要顯示的自定義對象,並在你的RDLC中使用它。

以下問題是指:Use custom objects as the source for Microsoft Reports (.rdlc)

如果這個環節基本答案:http://www.gotreportviewer.com/objectdatasources/index.html

+0

我正在考慮一個相同的解決方案(最大站數爲61),但這是問題 - 我如何計算特定路線上的站數?我按路線對車站進行了分組(每條路線都有一個唯一的號碼),那麼如何計算一組車站的車站數量呢? – NDraskovic

+0

我不太清楚你是如何分組數據的,你可以在你的問題中添加一個數據的例子嗎? – Deruijter

+0

我編輯了我的問題,請看看它。 – NDraskovic