簡體   English   中英

根據檢查表中“選定屬性的數量”創建Crystal Report,我們該如何做?

[英]Crystal Report Making on the basis of Number of Selected Attributes from check list, how can we do so?

我正在C#Windows窗體中開發應用程序,我基於c#中的數據收集列表制作水晶報表,例如,我有一個包含EmpID,名稱,贊助者,職務,國籍等的表。我將它們帶入c#中,將其傳遞給Crystal報表,我可以在“數據庫”字段中看到我的屬性,如果我將這些字段拖放到報表上,例如“姓名”,“職務”,“國籍”,那么我可以在“詳細信息”部分看到它們的列,但是問題是,我大約有25個屬性,並且我在c#中制作了一個25個屬性的檢查清單,如果我檢查了13個屬性,它應該制作一個13列的報表,問題是,我們在拖動和修改的基礎上在Crystal報表中制作了報表刪除字段,我該如何動態地做到這一點,意味着如果在c#檢查列表中選擇了13個字段,則報告中應該只有13列。 請找到附件中的圖像“我目前的狀況”,請右鍵單擊以放大它,然后在新窗口中打開。 在此處輸入圖片說明

我認為,考慮到數據類型表示和所有Crystal復雜性,解決此問題的最簡單方法是使用所有25個字段的適當大小來布局報表。

然后,在運行時,您將需要重新定位報表對象,由於Crystal提供信息的方式相對非結構化,因此這可能會有些棘手。

我將采用的方法是遍歷報表對象並為數據字段生成一個SortedList,為標題字段生成一個SortedList。 它們應該在其“左”位置排序,以便您可以按外觀順序對其進行處理。

找到對象的排序列表后,可以循環瀏覽每個對象,如果用戶未選擇,則將“寬度”設置為0。

在字段中移動時,將跟蹤當前的左側位置。 您處理的第一個字段將設置您的起點,即使它不可見。 然后,對於所有后續字段,如果該字段可見,則將其左側值設置為當前左側位置,然后為下一個字段將其寬度加上一些分隔符添加到當前左側位置。

希望這可以幫助您解決問題。

聽起來這將是交叉表報告的好地方。 在這種情況下,您需要在報表的頁眉或頁腳中添加一個交叉表,並將數據傳遞到報表中,並為每個屬性描述添加一列,然后對屬性描述進行分組。 詳情請見下文:

Data:

RowID  ColDesc    ColValue
1      Attr1      Value1
1      Attr2      Value2
2      Attr1      Value3

然后,您可以添加交叉表,其中行字段為RowID,列字段為ColDesc,要匯總的字段為ColValue。 您可以在摘要字段中使用摘要總數的最大值,因為它有所不同。

這未經測試,但我認為其輸出應為:

CrossTab:

       Attr1    Attr2
1      Value1   Value2
2      Value3 

如您所見,添加新屬性后,它將在交叉表中顯示為新列。 就像我之前說的那樣,這是未經測試的,因此對於任何錯誤我深表歉意,但我希望這足以幫助您。 謝謝

給定字段列表,Crystal Reports不會自動將列和標題添加到報表中。

我的建議是使用報表應用程序服務器.NET SDK動態更改報表。 該鏈接包括API參考以及示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM