2014-12-11 11 views
5

Khi chúng tôi triển khai một báo cáo SSRS tạo ra các lỗi sau:Có một lỗi trên dòng 58 mã tùy chỉnh: [BC30201] Biểu hiện dự kiến ​​

There is an error on line 58 of custom code: [BC30201] Expression expected

Tuy nhiên, báo cáo hoạt động tốt trên chế độ xem trước và hiển thị lĩnh vực này đúng.

Đoạn mã tùy chỉnh ở đây cũng được viết và thử nghiệm trong studio trực quan.

Dưới đây là các mã tùy chỉnh:

If (evaluationDate.Day = 31) Then '* affected line 
    returnValue.Append(String.Format("{0}{1:dd.MM}{2}", _ 
     If(index = 2, " und ", String.Empty), _ 
     New DateTime(evaluationDate.Year, evaluationDate.Month, lastDayOfMonthDictionary(evaluationDate.Month)), _ 
     If(index = 2, ".", String.Empty))) 

End If 

Như bạn có thể thấy, vấn đề là do một khối IF..THEN. assessmentDate là kiểu DateTime và giá trị bằng hoặc bằng đối số DateTime startdate hoặc sáu tháng trước startDate - là đối số datetime trong chữ ký của hàm.

Tôi không thể thấy có vấn đề gì với điều này và tôi cần biết tôi có thể làm gì để giải quyết vấn đề này. Bất kỳ ý tưởng?

+0

6 tháng tới là tháng 6 (có 30 ngày), vì vậy theo bản năng tôi sẽ sửa lại số ma thuật 31 ngày đó để bắt đầu gỡ lỗi. Cho dù đó thực sự là nguyên nhân gốc rễ thì tôi cũng không chắc chắn. –

+0

Xóa '()' xung quanh câu lệnh? 'Nếu assessmentDate.Day = 31 Sau đó, ' –

+0

@VisualVincent tôi đã thử điều đó. Lỗi được chuyển thành 'định nghĩa không hợp lệ'. @NathanTuggy, tôi đã viết và thử nghiệm điều này trong Visual studio, khi ngày 31 tháng 12 trên 'startdate' và 6 tháng đã được thêm vào, ngày đánh giá là ngày 30 tháng 6 - điều đó không gây ra vấn đề gì. như tôi đã nói, lỗi này chỉ xảy ra trong quá trình triển khai. trên Xem trước, nó hoạt động chính xác – Eon

Trả lời

6

Kết luận - SSRS có một cách tà ác để đối phó với ternaries, mặc dù nó hoàn toàn mong đợi mã VB trong phân đoạn mã tùy chỉnh.

Lỗi này tôi đã nhận được đang chuyển hướng sai và chỉ vào dòng sai - đó là dòng ngay bên dưới dòng này mà tôi đã đánh dấu trong câu hỏi.

Thông báo việc sử dụng của ternaries: If(index = 2, " und ", String.Empty) - SSRS cố gắng chạy If-ternary (như bạn sẽ khai báo nó trong VB.NET) như là một khối If..Then - và vì không Then được tìm thấy, và có rất nhiều tranh cãi dấu phẩy- tách ra, này muddles SSRS và do đó nó in Expression Expected

cách khắc phục vấn đề này là cách truyền thống SSRS Expressional

'Instead of this: 
If(index = 2, " und ", String.Empty) 

'Use This: 
IIf(index = 2, " und ", String.Empty) 

này vẫn nên cho phép bạn xem trước mã của bạn (thậm chí bình thường If cho phép bạn xem trước, nhưng phá vỡ thời gian triển khai)

+0

Được thăng hạng. Tôi bực bội vì tôi bị cắn bởi điều này - Tôi không thể sử dụng toán tử IIF vì tôi cần đoản mạch, nhưng tôi không có lựa chọn vì SSRS hút. Thở dài. Đoán xem bạn không thể thắng tất cả, phải không? –

+1

@ jedd.ahyoung Mã tùy chỉnh của báo cáo có thể xử lý VB.NET cũ, vậy tại sao không viết phương thức trợ giúp thay vì sử dụng câu lệnh if trường cũ (hỗ trợ đoản mạch) và tham khảo những người trợ giúp trong hộp công cụ biểu thức của bạn bằng ' ... &! Code.methodName (đối số) & ... ' – Eon

+0

Cảm ơn các bạn, điều này đã tiết kiệm thời gian của tôi. – Saxophonist

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