2009-06-05 72 views
5

Tôi có một @InitVars công thức trong tiêu đề trang trong đó bao gồm những điều sau đây, và các dòng tương tự:biến Crystal Reports, tiểu báo cáo, và chia sẻ

shared numbervar runWaste:=0; 

Trong chi tiết v, tôi có một tiểu báo cáo, có công thức @SetRunWaste:

shared numbervar runWaste; 
if (OnFirstRecord) then 
(
if not(isnull({x.x-or})) and 
not(isnull({x.y-override})) and {x.y-override} = true then 
runWaste:={x.x-or} 
    else 
runWaste:= {x.x} 
); 
runWaste 

Tôi có thể thấy kết quả của công thức này trong báo cáo phụ là 18.00.

Tuy nhiên, cả trong một báo cáo-sub, trong chi tiết az, và trong báo cáo chính trong chi tiết w (như là một thử nghiệm), tôi có @test công thức sau:

shared numbervar runWaste; 
runWaste; 

Trong cả hai nơi, nó hiển thị là 0,00.

Tại sao nó hiển thị 0 không 18?

Tôi đang sử dụng Crystal Reports phiên bản 11.0.0.895.

Trả lời

9

Vấn đề là @InitVars nằm trong tiêu đề trang, không phải tiêu đề báo cáo. Nó đặt lại biến thành 0 ở đầu mỗi trang.

Di chuyển @InitVars đến tiêu đề báo cáo đã sửa nó để số chính xác xuất hiện trong báo cáo phụ trong Chi tiết az.

Tôi vẫn thấy một số hành vi lạ khi tôi đưa biến vào báo cáo chính, nhưng vì đó chỉ là để gỡ lỗi, không phải mục tiêu chính, tôi không quan tâm.

1

Tôi có một bộ nhớ mơ hồ rằng hiện tại tôi đang gặp khó khăn trong việc chứng minh các biến được chia sẻ không chuyển ngược trở lại từ một subreport. Vẫn đang nhìn; điều tốt là chiều thứ Sáu.

Chỉnh sửa: Tôi không thể tìm thấy những gì tôi đang tìm kiếm, vì vậy một ý nghĩ chung. Kiểm tra thời gian đánh giá và đảm bảo rằng phần sau trên báo cáo chính đang đánh giá sau khi subreport (WhilePrintingRecords có thể là bạn của bạn ở đây).

+0

Hmm, thêm bản ghi whileprinting vào @test khiến nó hoạt động ở chân trang, nhưng vẫn không chính xác chi tiết w. Nó cũng không chính xác trên các trang sau ... – LeBleu

+0

Và bạn chắc chắn rằng nó không được đặt lại ở đâu đó, hoặc ở một nơi khác trong báo cáo chính, hoặc ở một trong các subreports? – Adrien

0

Từ bài viết Adding Sub reports ,Find Sub Total and Grand Total(To main Report):

Crystal Reports là một ứng dụng kinh doanh thông minh sử dụng để thiết kế và tạo các báo cáo từ một loạt các nguồn dữ liệu. Sub Báo cáo là báo cáo con của báo cáo chính có thể được nhúng trong báo cáo chính . Báo cáo phụ rất nhiều hữu ích trong việc tạo báo cáo.

Thêm báo cáo Sub tìm tổng và lớn tổng phụ của mỗi báo cáo tiểu trong báo cáo chính

báo cáo chính

Sub Báo cáo 1

Sub Tổng số: sum (LabTotal)

Báo cáo phụ 2

Tổng số phụ: tổng (ItemTotal)

Tổng cộng

Báo cáo phụ là tùy chọn rất hữu ích trong báo cáo tinh thể . Giả sử chúng ta muốn tìm

Thêm Crystal Report

  1. Add New item-> Crystal Report
  2. Nếu chúng ta muốn tạo Crystal Report định dạng riêng của chúng tôi chọn “Là một Trống Báo cáo” từ báo cáo tinh bộ sưu tập
  3. Nhấp chuột phải vào “Trường cơ sở dữ liệu” trong trường Cơ sở dữ liệu và chọn bảng từ cơ sở dữ liệu rồi tạo Liên kết (nếu cần)
  4. Nhấp chuột phải từ “Chi tiết mục” và Thêm báo cáo phụ.
  5. Lặp lại những điều tương tự mà chúng tôi đã thực hiện trong các báo cáo chính và kéo lĩnh vực cần thiết để phần chi tiết phụ báo cáo

Đối với Ví dụ: Chúng tôi đang tạo báo cáo lao động tổng tỷ lệ lao động có thể tính như

Trong trường Công thức –tên LabTotal

WhilePrintingRecords; Shared NumberVar LabTotal: = Sum ({PC_LABOUR_DETAILS.Total})

({PC_LABOUR_DETAILS) - bảng Tổng số lĩnh vực ---

và thêm tổng LabTotal vào tổng lĩnh vực phụ

Nếu chúng tôi có một báo cáo phụ khác để thêm ion trang chính, hãy nhấp chuột phải vào trên phần “Chi tiết” và thêm phần mới -> Chi tiết (b) và lặp lại bước 4 và 5 Ở đây chúng tôi sẽ thêm phụ thứ hai Báo cáo cho vật liệu và tổng số phụ của vật liệu có thể được xác định như

Trong lĩnh vực Formula -name ItemTotal

WhilePrintingRecords; Shared NumberVar ItemTổng số: = Tổng số {PC_MATERIAL_DETAILS.Tổng số})

({PC_MATERIAL_DETAILS) --table Tổng - lĩnh vực

và thêm tổng ItemTotal vào tiểu tổng lĩnh vực

báo cáo chính

Để tìm tổng lớn của cả hai tiểu số báo cáo

Trong tên trường công thức-GrandTotal

WhilePrintingRecords; Shared NumberVar ItemTotal; Shared NumberVar LabTotal; NumberVar TotalAmount; TotalAmount: = ItemTotal + LabTotal; TotalAmount

+0

@ kristina: Vui lòng không chỉ sao chép và dán nội dung từ các trang web khác mà không cung cấp tín dụng phù hợp cho tác giả gốc. Cảm ơn bạn. –

Các vấn đề liên quan