2009-05-18 26 views
6

Tôi có báo cáo với tập dữ liệu có cột có boolean. Trong chân trang, tôi muốn hiển thị x/y trong đó x là số hàng là truey là tổng số hàng.SSRS: Cách đếm các hàng đúng

Hiện nay tôi có điều này:

=Count(Fields!Transfered.Value).ToString() + "/" + CountRows().ToString() 

Nhưng người đầu tiên trở thành giống như phần cuối cùng. Sau đó tôi đã thử điều này:

=Sum(Fields!Transfered.Value).ToString() + "/" + CountRows().ToString() 

Nhưng điều đó tạo ra lỗi, tôi đoán là tôi có thể hiểu được. Tôi nghĩ rằng nếu tôi chuyển đổi các boolean thành số mà đúng là 1 và false là 0, thì nó có thể hoạt động tốt. Nhưng làm thế nào tôi có thể làm điều đó? Hay là cách thông minh hơn để làm điều này với nhau?

Cập nhật: có bây giờ cũng cố gắng

=Sum(CInt(Fields!Transfered.Value)).ToString() + "/" + CountRows().ToString() 

Và có một kết quả tiêu cực ... o.o

Cũng tìm ra cách mà làm việc, mà tôi được đăng như một câu trả lời. Nhưng tôi sẽ không chấp nhận câu trả lời cho dù ai đó có cách tốt hơn để làm điều này =)

Trả lời

9

tôi có thể cho bạn biết tại sao mọi thứ đã đi sai ...

  • Count (Fields! Transfered.Value) chỉ đơn giản là số lượng hàng. aka CountRows()
  • Tổng (Fields! Transfered.Value) đang cố gắng tổng hợp "true" hoặc "false" = lỗi
  • Tổng (CInt (Fields! Transfered.Value)) sẽ cộng -1 và 0 vì VB NET đúng = -1
  • Sum (IIF (Fields! Transfered.Value, 1, 0)) sửa chữa các vấn đề dấu = giải pháp của bạn

Để tránh thêm IIF, bạn có thể sử dụng phủ nhận tổng của tất cả các -1s

= -Sum(CInt(Fields!Transfered.Value)).ToString() + "/" + CountRows().ToString() 

Cuối cùng, một trong hai giải pháp sẽ ổn và cả hai đều bằng nhau kludgy

+2

Cảm ơn! Mọi thứ trở nên rõ ràng hơn: D (Tại sao mọi người lại quyết định làm đúng = -1 ??) – Svish

+3

Dunno. Để khiến mọi người ghét VB.Net? ;-) – gbn

+1

Vâng, họ đã thực hiện một công việc tốt của anyways đó: p C# FTW! – Svish

1

Đã tìm ra cách để làm điều đó, mặc dù có thể là cách tốt hơn và rõ ràng hơn ...

=Sum(IIF(Fields!Transfered.Value, 1, 0)).ToString() + "/" + CountRows().ToString() 
1

Tôi đã xem xét điều này ngày hôm nay và ít nhất đã xác minh rằng tôi không phải là người duy nhất có giá trị tổng âm cho các bool ra khỏi SSRS. Cảm ơn.

Giải pháp của tôi là sử dụng ABS cho giá trị tuyệt đối. Tôi thích điều đó tốt hơn là chỉ phủ nhận biểu thức chỉ vì nó dễ dàng hơn để xem trực quan nơi '-' có thể bị bỏ qua nếu bạn không cẩn thận trong việc đọc biểu thức.

nhưng đó là về cơ bản giống điều chính xác

0

Dưới đây là một cách mà bạn tin cậy vào một giá trị nhóm

=CountDistinct(IIF(Fields!TrueOrFalseField.Value, 
        Fields!GroupedField.Value, 
        "BadValueToBeRemovedFromCount")) 
       -IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
           and First(Fields!TrueOrFalseField.Value) 
        , 0, 1) 

Phần thứ hai

-IIF(CountDistinct(Fields!TrueOrFalseField.Value)=1 
            and First(Fields!TrueOrFalseField.Value) 
         , 0, 1) 

remove 1 từ đếm nếu nó có giá trị TrueFalse hoặc nếu chỉ có một giá trị false riêng biệt.

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