2011-12-05 32 views
5

Tôi nhận ra đây sẽ là một thứ được viết khá rõ ràng như một chủ đề trung tâm của JasperReport, tuy nhiên tôi không thể tìm thấy câu trả lời cho bất cứ đâu.JasperReport: Mục đích của Ban nhạc chi tiết

Mục đích/chức năng/ý định của băng chi tiết là gì? Nó được cho là chỉ là phần trung tâm hoặc cốt lõi của một báo cáo?

Từ một câu hỏi khác, nó được chỉ ra cho tôi rằng có mối quan hệ 1: 1 giữa một dải chi tiết và một bản ghi/đậu do JRDatasource cung cấp. Điều mặc khải này đưa ra ánh sáng một vài câu hỏi tiếp tuyến:

  • Có thể thêm các dải chi tiết theo lập trình trong Java; điều gì sẽ xảy ra nếu bạn chỉ định các dải chi tiết hơn/ít hơn (lập trình) hơn là các bản ghi/các hạt được trả về bởi JRDataSource của bạn?
  • Mối quan hệ giữa một dải chi tiết và nói gì, một trang bên trong tài liệu PDF đã xuất? Có 1 dải chi tiết dịch sang 1 trang không?
  • Điều gì sẽ xảy ra nếu bạn vượt qua JasperFillManager a null nguồn dữ liệu? Có thể vẫn có các dải chi tiết không?

Tôi không thích đặt nhiều câu hỏi cùng một lúc, nhưng chúng liên quan đến tương tự như vậy tôi muốn làm tất cả cùng một lúc hơn là lộn xộn SO với nhiều câu hỏi gần như giống hệt nhau. Cảm ơn trước.

Trả lời

8

Dải chi tiết thực sự là dải mà mỗi phần tử của nguồn dữ liệu được báo cáo. Công cụ báo cáo tự động lặp qua nguồn dữ liệu và chèn dữ liệu vào mẫu của băng chi tiết với phần tử tương ứng của nguồn dữ liệu.

Bạn có thể có một số thành phần trên một trang. Theo các thuộc tính của dải (phân chia cho phép, chiều cao, vv), phân trang sẽ được xử lý bởi Jasper Reports tự động, và đó là động cơ sẽ quyết định số lượng phần tử được in trên mỗi trang, khi đi đến , v.v.

Dải chi tiết không được in nếu bạn không có gì trong nguồn dữ liệu. Việc in các băng khác phụ thuộc vào các thông số của báo cáo.

0

Như tôi đã nhớ, bạn có thể thấy băng chi tiết là "mô hình" cho một hàng/bản ghi trong báo cáo. Tất cả các yếu tố bạn đưa vào bên trong dải chi tiết sẽ được lặp lại cho mỗi bản ghi được cung cấp bởi JRDatasource. Ví dụ:

Ví dụ: băng chi tiết của bạn có thể có hai trường văn bản, một trường có giá trị $ {companyName} và một giá trị có giá trị $ {revenue}.

Nếu bây giờ bạn vượt qua báo cáo ba hàng, sau đó "CompanyName" và "doanh thu" sẽ được đánh giá cho mỗi trong số họ, và bạn có thể có được một cái gì đó như:

|Apple    | $1000,000,000| 
|Microsoft   | $500,000,000| 
|My amazing company |   $12| 

Ie, nội dung băng chi tiết có được lặp lại ba lần.

Vì vậy: - Như bạn thấy, có thể bạn chỉ cần một băng thông chi tiết được định cấu hình. Không chắc chắn nếu nó được phép trong JRXML có nhiều cái. - Không có mối quan hệ giữa dải chi tiết và trang. Phân trang được xử lý riêng. - Không chắc chắn, phải trung thực. Dự đoán tốt nhất của tôi là ngoại lệ hoặc bạn không nhận được hàng nào mà ban nhạc chi tiết được cho là hiển thị.

2

Mục đích của chi tiết band là cung cấp cho bạn mô hình nơi bạn đặt và định cấu hình các yếu tố báo cáo. Tôi không nghĩ rằng mối quan hệ giữa một cây đậu và chi tiết ban nhạc là một đến một, vì bạn có thể đặt nhiều yếu tố tài sản đậu trong một đậu. Vì vậy, tôi sẽ nói rằng các chi tiết ban nhạc được gắn chặt với một tập hợp các yếu tố báo cáo đậu.

Một điểm khác biệt là thực tế là chức năng của băng chi tiết không liên quan đến số lượng hạt/bản ghi bạn cung cấp thông qua JRDataSource. Dải chi tiết sẽ lặp qua tất cả chúng cho đến khi nguồn dữ liệu được "tiêu thụ".

Hơn nữa, cá nhân tôi thấy rất hữu ích khi băng chi tiết cho phép bạn lặp qua bộ sưu tập các thuộc tính bean. Vì vậy, việc đặt một số thuộc tính trong một dải chi tiết sẽ lặp qua tất cả các thuộc tính, trước khi tiếp tục chuyển tiếp.

Nếu bạn vượt qua nullDataSource bạn sẽ không nhận được bất kỳ dữ liệu nào trên báo cáo và chỉ văn bản static sẽ hiển thị.

0

Bạn hiểu nhầm một dải chi tiết là gì.

Dải chi tiết của báo cáo sẽ được in cho từng yếu tố trong nguồn dữ liệu của bạn. Nếu bạn sử dụng nguồn dữ liệu của cơ sở dữ liệu, chi tiết sẽ được in nhiều lần khi các hàng có kết quả của bạn. Nếu bạn sử dụng nguồn dữ liệu JRBeanCollection, băng chi tiết sẽ được in nhiều lần khi các mục có bộ sưu tập của bạn.

Để trả lời câu hỏi của bạn:

  1. Bạn không thể chỉ định nhiều hơn một detailband, đó là bất hợp pháp. Bạn có thể sử dụng các subreports cho mục đích đó.

  2. Báo cáo sẽ xuất nhiều băng chi tiết nhất có thể trên mỗi trang. Mặt khác, bạn có thể làm cho các chi tiết ban nhạc cùng chiều cao báo cáo mong muốn của bạn đầu ra sẽ được (trừ tiêu đề/footer/etc chiều cao). Nếu bạn muốn in báo cáo bằng giấy A4, bạn có thể làm cho dải chi tiết của bạn cao 297 mm (xem bạn không có dải nào khác). Sau đó, mỗi dải chi tiết sẽ là được in trong một trang riêng biệt.

  3. Nếu bạn chuyển nguồn dữ liệu trống, báo cáo sẽ được tạo với không có trang nào.
+1

Bạn có thể chỉ định nhiều hơn một băng chi tiết và đôi khi rất có ý nghĩa để thực hiện chính xác điều đó. Subreports rất hữu ích vì chúng có bộ dữ liệu riêng, nhưng nếu bạn muốn sử dụng cùng dữ liệu với báo cáo chính thì chúng sẽ kém hiệu quả hơn là chỉ thêm một dải chi tiết khác. – GenericJon

0

Thông tin bạn có là chính xác, bạn vừa hiểu nhầm một chút về ý nghĩa của nó.

Mối quan hệ 1: 1 ở thời gian lấp đầy; Khi báo cáo đã được điền, sẽ có chính xác 1 dải chi tiết cho mỗi bản ghi trong tập dữ liệu. Khi bạn đang thiết kế báo cáo, bạn chỉ thêm ban nhạc một lần, nhưng một ban nhạc được lặp đi lặp lại nhiều lần khi báo cáo được lấp đầy.

Bạn có thể thêm bao nhiêu băng chi tiết tùy thích. Mỗi băng tần có mối quan hệ 1: 1 với bản ghi dữ liệu và tất cả các dải chi tiết được điền trước khi chuyển sang bản ghi tiếp theo (ví dụ: Nếu bạn có ba băng A, B và C; Thứ tự của chúng trong báo cáo sẽ là ABCABC ... không phải AAA ... BBB ... CCC ...).

  • Có thể thêm dải lập trình, nhưng điểm quan trọng cần lưu ý là bạn đang thêm băng tần cho việc thiết kế báo cáo , không báo cáo hoàn thành.Vì vậy, cũng giống như với một thiết kế jrxml, bạn thêm ban nhạc một lần và nó được lặp lại cho mỗi bản ghi. Check this example.

  • Không có mối quan hệ giữa các trang báo cáo và các dải chi tiết. Trình điền báo cáo sẽ cố gắng đặt càng nhiều trang càng tốt trong khi tôn trọng splitType của mỗi băng cũng như các thuộc tính báo cáo khác.

  • Việc chuyển nguồn dữ liệu null có được phép không? Trong mọi trường hợp, mối quan hệ 1: 1 vẫn hợp lệ: Tập dữ liệu có 0 bản ghi sẽ tạo ra 0 dải chi tiết trong báo cáo.