2014-12-11 4 views
5

जब हम एक रिपोर्ट SSRS निम्न त्रुटि उत्पन्न तैनात:कस्टम कोड की लाइन 58 पर कोई त्रुटि है: [BC30201] अभिव्यक्ति की उम्मीद

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

हालांकि रिपोर्ट पूर्वावलोकन मोड पर ठीक काम करता है और क्षेत्र को प्रदर्शित करता है सही ढंग से।

यहां कस्टम कोड सेगमेंट भी विजुअल स्टूडियो में लिखा और परीक्षण किया गया है।

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 

आप देख सकते हैं, समस्या एक IF..THEN ब्लॉक कर रहा है:

यहां कस्टम कोड है। मूल्यांकन दिनांक डेटटाइम प्रकार का है और मान या तो डेटटाइम तर्क startdate या startDate से छह महीने पहले के बराबर है - जो फ़ंक्शन के हस्ताक्षर में डेटाटाइम तर्क है।

मैं नहीं देख सकता कि इसमें क्या गलत है और मुझे यह जानने की जरूरत है कि मैं इस मुद्दे को हल करने के लिए क्या कर सकता हूं। कोई विचार?

+0

6 महीने आगे जून (जिसमें 30 दिन हैं) है, इसलिए सहजता से मैं उस 31-दिवसीय जादू संख्या पर डिबगिंग शुरू करने के लिए ठीक कर दूंगा। चाहे वह वास्तव में मूल कारण है, मुझे यकीन नहीं है। –

+0

कथन के आसपास '()' हटाएं? 'अगर मूल्यांकन दिनांक। डे = 31 फिर' –

+0

@ विज़ुअल विन्सेंट मैंने कोशिश की। त्रुटि 'अवैध परिभाषा' में बदल गई। @NathanTuggy, मैंने विजुअल स्टूडियो में इसे लिखा और परीक्षण किया है, जब दिनांक 31 दिसंबर को 'स्टार्टडेट' पर था और 6 महीने जोड़े गए थे, मूल्यांकन दिनांक 30 जून था - इससे मुद्दों का कोई कारण नहीं था। जैसा कि मैंने कहा, यह त्रुटि केवल तैनाती के दौरान होती है। पूर्वावलोकन पर, यह सही ढंग से काम करता है – Eon

उत्तर

6

निष्कर्ष - एसएसआरएस के पास टर्नरी से निपटने का एक बुरा तरीका है, भले ही यह कस्टम कोड सेगमेंट में वीबी कोड की पूरी तरह से अपेक्षा करता है।

मुझे मिली यह त्रुटि गलत दिशा-निर्देश थी, और गलत रेखा की ओर इशारा किया - यह इस प्रश्न में चिह्नित एक के नीचे की रेखा थी।

सूचना ternaries का उपयोग: If(index = 2, " und ", String.Empty) - SSRS एक If..Then ब्लॉक के रूप में अगर-त्रिगुट (आप VB.NET में यह घोषणा करेंगे के रूप में) को चलाने के लिए कोशिश करता है - और क्योंकि कोई Then पाया जाता है, और वहाँ कई तर्क कॉमा- हैं अलग हो गए, इस SSRS muddles है और इस तरह यह प्रिंट Expression Expected

तरह से इस समस्या को हल करने के लिए पारंपरिक SSRS Expressional रास्ता

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

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

यह अभी भी आप अपने कोड का पूर्वावलोकन करने (यहां तक ​​कि सामान्य If करने के लिए आप की अनुमति दी अनुमति चाहिए है पूर्वावलोकन, लेकिन Durs तोड़ता है आईएनजी तैनाती)

+0

उपरोक्त। मैं नाराज हूं क्योंकि मुझे अभी तक काट दिया गया है - मैं आईआईएफ ऑपरेटर का उपयोग नहीं कर सकता क्योंकि मुझे शॉर्ट सर्किटिंग की ज़रूरत है, लेकिन मेरे पास कोई विकल्प नहीं है क्योंकि एसएसआरएस बेकार है। आह। मान लीजिए कि आप सभी को जीत नहीं सकते हैं, हुह? –

+1

@ jedd.ahyoung एक रिपोर्ट का कस्टम कोड सादे पुराने वीबीएनईटी को संभाल सकता है, इसलिए पुरानी स्कूल if-statement (जो शॉर्ट सर्किटिंग का समर्थन करता है) का उपयोग करने के बजाय एक सहायक विधि क्यों नहीं लिखता है और उन खोजकर्ताओं को उनके अभिव्यक्ति टूलबॉक्स में संदर्भित करता है ' ... और! Code.methodName (तर्क) और ... ' – Eon

+0

धन्यवाद दोस्तों, यह मेरा समय बचाया। – Saxophonist

संबंधित मुद्दे