2011-09-06 141 views
0

我正在開發一個windows窗體應用程序,它有幾個使用vb.net包含datagridviews的窗口。最近客戶想出了能夠打印每個表格的數據的願望。運行時設計報告

幾個月前我使用Crystal報告成功設計和實現了我的第一份報告,我的第一本能是使用水晶報告來做到這一點。但是,因爲我已經知道我想要在第一份報告中提供哪些列和數據,所以我可以設計報告考慮這一點,所以這沒有問題。

現在,我面臨的挑戰是,我不知道報表中要打印的列的確切數量,所以恐怕我不得不以編程方式設計報表,所以我的問題是;

  1. 是否有任何方式通過編程來設計報告?例如,我是否可以僅使用代碼告訴水晶報表在細節部分放置一個「表格對象」,然後放置一個名爲X的列,另一個名爲Y?如果可能的話,有人可以給我一些關於如何做這個或類似的示例代碼?

  2. 如果在水晶報告中不可能有1,那麼有人可以指向我可以達到1的其他報告軟件,並且如果可能的話,如何?

  3. 我是否合理地接近問題或者是否有更好更簡單的方式來實現客戶的期望?

順便說一句,我已經提供導出表到Excel,從中他們希望客戶能夠打印出來的可能性,但它會出現,他們更喜歡票友尋求與標識之類的東西作爲一個可能的報告在水晶報告中實現。

對於實現此功能的任何幫助,我將非常感激。

回答

1

你有兩種方法可以做到這一點,其中一個很難。首先讓我們開始努力。 CR有一個功能齊全的庫,可以讓你幾乎從頭開始創建報告。它被稱爲RAS庫。但是這對於一個新來Crystal的人來說是非常複雜的,而不是最好的。

下一個解決方案和最簡單的方法是創建一個包含所有可能需要的字段的報告,然後使用ReportObject模型動態地隱藏不需要顯示的字段。因此,如果您的報告中可能有5到10列,請在報告中創建全部10列。然後在你的應用中,如果你不需要第10列,就隱藏它。像這樣的東西:

CrystalDecisions.CrystalReports.Engine.ReportDocument myReport; 
myReport.Load("..your file..."); 
CrystalDecisions.CrystalReports.Engine.TextObject myField; 
myField =(CrystalDecisions.CrystalReports.Engine.TextObject)HealthRounds.ReportDefinition.ReportObjects["Field10"]; 
myField.ObjectFormat.EnableSuppress = true; 
... 
0

如果你需要它真的動態,也許更容易,看看list & label。 的你需要做什麼樣看起來有點簡單:

Proj.Open(@「c:\Reports\artikel.lst」 , LlDomFileMode .Create, 
    LlDomAccessMode .ReadWrite, true); 

ObjectReportContainer container= new 
    ObjectReportContainer (Proj.Objects); 

container.Position.Left = 「0」 ; 
container.Position.Top = 「0」 ; 
container.Position.Width = 「150000」 ; 
container.Position.Height = 「200000」 ; 

SubItemTable table = new SubItemTable 
    (container.SubItems); 
table.TableID = 「Customers」 ; 

TableLineData dataLineNew = new 
    TableLineData (table.Lines.Data); 
dataLineNew.Name = 「Created dynamically」 ; 

TableFieldText textCol = new 
    TableFieldText (dataLineNew.Fields); 
textCol.Contents = 「Product.No」 ; 

TableFieldBarcode barcodeCol = new 
    TableFieldBarcode (dataLineNew.Fields); 
barcodeCol.Contents = 「Barcode(Product.No, ‘PDF417’)」 ; 

Proj.Save(); 
Proj.Close(); 

More Details here...

您至少需要「Professional」 -Edition使用此功能。 我用這個成熟的軟件做了一些不錯的程序。

0

這是很容易做到的我只是想告訴你新的方法來做到這一點流量此步驟:

  1. 把希望顯示到適配器,把適配器的數據集的數據
  2. 在您的計算機驅動程序中生成file.html代碼讓c
  3. 根據數據集中的單元格和數據集的標題填充數據集中的數據,該數據集是動態列,您想在顯示文件後填充文件後顯示
  4. 數據打開html文件

瀏覽器具有的功能,從打印文件的打印預覽 頁面內容,這是動態的報告只是讓你的數據從SQL查詢要