2012-06-14 14 views
16

पृष्ठभूमि वस्तु के लिए:मुद्दे स्थापना RDLC डेटा स्रोत

मैं ASP.Net सी # MVC के लिए एक एक्सेस डेटाबेस आवेदन परिवर्तित करने का काम सौंपा गया है। यह मेरा पहला एमवीसी एप्लीकेशन है।

10 रिपोर्टें हैं जिन्हें परिवर्तित करने की आवश्यकता है। हम आरडीएलसी फाइलों और रिपोर्टव्यूअर का उपयोग कर रहे हैं। मैं सभी नवीनतम पैच के साथ विजुअल स्टूडियो 2010 का उपयोग कर रहा हूं। हम मौजूदा SQL डेटाबेस द्वारा पॉप्युलेट किए गए SQL सर्वर डेटाबेस पर हुक कर रहे हैं, इसलिए तालिका संरचना पत्थर में बहुत अधिक सेट है, अन्यथा हमें 10 वर्षों के डेटा को कन्वर्ट करने की कोशिश करनी होगी।

मैंने दो रिपोर्टों को पूरा कर लिया है। अंतिम रिपोर्टों के लिए अधिक प्रसंस्करण की आवश्यकता होती है, और डेटाबेस से डेटा प्रदर्शित न करें। ऐसा करने का सबसे आसान तरीका सी # ऑब्जेक्ट बनाना और सभी प्रोसेसिंग सर्वर-साइड करना होगा, फिर परिणाम प्रदर्शित करने के लिए आरडीएलसी का उपयोग करें।

अंक

समस्या मैं आ रही हैं कि विजुअल स्टूडियो वस्तुओं मैं संभावित datasources के रूप में बना लिया है पहचान नहीं होगा। हर बार जब मैं "डेटासेट जोड़ने" का प्रयास करता हूं तो यह "डेटासोर्स कॉन्फ़िगरेशन विज़ार्ड" लाता है और केवल SQL सर्वर डेटाबेस को संभावित डेटा कनेक्शन के रूप में प्रदान करता है। मुझे पता है कि एक स्क्रीन है जो मौजूद है जो आपको किसी ऑब्जेक्ट को अपने डेटासेट के रूप में चुनने की अनुमति देती है, लेकिन मुझे वह स्क्रीन कभी नहीं दिखाई देती है।

यहाँ वस्तुओं (प्रसंस्करण कार्यों स्पष्टता के लिए निकाला गया) कर रहे हैं:

public class TurnAroundVal 
{ 
    // Registration Package information 
    public string dataType { get; set; } 

    // Calculated totals; values only set through constructor or calculation function 
    public int packageCount { get; private set; } 
    public int dayCount { get; set; } 
    public double avgTurnAround { get; private set; } 
    public int upperRange { get; private set; } 
    public int lowerRange { get; private set; } 
} 

public class TurnAroundVals 
{ 
    // Public Variables 
    public IEnumerable<TurnAroundVal> TurnArounds { get; private set; } 
    public DatePass dates { get; set; } 
    public int pkgTotal { get; private set; } 
    public double dayTotal { get; private set; } 
    public double avgAllTurnArounds { get; private set; } 
} 

मैं भी "TurnAroundVal" की IEnumerable उपयोग करने के लिए एक डेटा स्रोत के रूप में तैयार होगा, और सिर्फ पारित दिनांक, पूर्णांक, और युगल पैरामीटर के रूप में। या तो काम करेगा।

प्रश्न

वहाँ दृश्य स्टूडियो 2010 में एक सेटिंग है कि मैं RDLC डिजाइनर वस्तुओं मैं बनाया देखने के लिए अनुमति देने के लिए याद कर रहा हूँ है? क्या मैं यह सोचने में भी गलत हूं कि यह परिभाषित कक्षाओं के साथ काम करेगा?

उत्तर

दिए गए सुझाव के सभी मददगार थे, लेकिन अंत में क्या यह मेरे लिए काम मिल गया एक ही समाधान में एक अस्थायी गैर-वेब परियोजना बनाने और वहाँ RDLC बनाने के लिए किया गया था। जब मैं एक डेटासेट जोड़ने के लिए गया, तो यह एक विकल्प के रूप में "ऑब्जेक्ट्स" दिखाता है। आपको अपनी वेब प्रोजेक्ट में एक संदर्भ जोड़ना होगा ताकि आपकी ऑब्जेक्ट्स दिखाई दे सकें, लेकिन फिर आप जो चाहें उसे चुन सकते हैं और आरडीएलसी में इसका इस्तेमाल कर सकते हैं। इसके बाद, आप आरडीएलसी फ़ाइल को अपनी वेब प्रोजेक्ट में खींच सकते हैं, अस्थायी परियोजना को हटा सकते हैं, और आप जाने के लिए अच्छे हैं। बस याद रखें कि आपको कोड में मैन्युअल रूप से डेटा स्रोत जोड़ना होगा, और उन्हें आरडीएलसी में निर्दिष्ट जैसा ही नाम दिया जाना चाहिए।

उत्तर

3
  1. सुनिश्चित करें कि कक्षाएं एप्लिकेशन के समान नामस्थान में हैं।
  2. रिपोर्ट बनाने से पहले एप्लिकेशन बनाने का प्रयास करें
  3. रिपोर्ट विज़ार्ड प्रारंभ करें। DataSouce के तहत अपने वेब एप्लिकेशन का नाम चुनें।
  4. उपलब्ध डेटासेट के तहत आपको देखना चाहिए कि विजुअल स्टूडियो आपके "चयन विधि" के रूप में क्या व्याख्या करता है। अगर सब ठीक है, तो यह टर्नअराउंड होना चाहिए।

आपको कक्षा फ़ाइल को App_Data या App_Code फ़ोल्डर में रखने की आवश्यकता हो सकती है, लेकिन मुझे निश्चित नहीं है।

इससे भी मदद मिल सकती है।

http://msdn.microsoft.com/en-us/library/ms251692%28v=vs.100%29.aspx

+2

पहले से ही यह सब कोशिश की है, लेकिन यह अभी भी अच्छी जानकारी है। मैंने जो किया वह घायल हो गया, उसी समाधान में एक नई गैर-वेब प्रोजेक्ट तैयार कर रहा था, जिसमें आरडीएलसी बनाया गया था, फिर इसे वेब प्रोजेक्ट में खींचें/छोड़ दें। ऐसा करने के लिए शायद कम कमजोर तरीका है, लेकिन यह काम किया। – War2d2

2

एक ही नाम स्थान के तहत लेकिन एक अलग परियोजना जिसे फिर आप अपने यूआई परियोजना पर संदर्भ पर अपनी वस्तुओं सेट करें।

INotifyPropertyChanged को लागू करने का भी प्रयास करें।

2

जब आप केवल सार्वजनिक सदस्यों का उपयोग करते हैं तो विजुअल स्टूडियो आपकी कक्षा को नहीं पहचानता है। जब आप गेटटर और सेटर का उपयोग करते हैं, तो आप अपना डेटासोर्स चुनते समय अपनी कक्षा देख सकते हैं।

विजुअल स्टूडियो में कुछ अन्य जादूगर हैं जो सार्वजनिक सदस्यों के साथ काम नहीं करते हैं।

चीयर्स, मार्कस

+0

क्या आप कह रहे हैं कि स्वत: कार्यान्वित गुण काम नहीं करते हैं? – Ben

0

मैं बस जब RDLC विजुअल स्टूडियो 2017 में एक ASP.NET MVC परियोजना में रिपोर्ट बनाने का प्रयास कर यह एक ही मुद्दे का सामना करना पड़ा, तो मैं एक अलग जवाब के रूप में इस जोड़ रहा इसे स्पष्ट करने के लिए यह जनवरी 2018 में अभी भी एक मुद्दा है।

मेरा समाधान एक सी # लाइब्रेरी प्रोजेक्ट और एक एमवीसी क्लाइंट प्रोजेक्ट शामिल था।

सी # पुस्तकालय परियोजना में (एक नया आइटम पर जोड़ने चुनकर, फिर एक रिपोर्ट विज़ार्ड आइटम का चयन करके) रिपोर्ट जोड़ रहे डेटा स्रोत विन्यास जादूगर के साथ रिपोर्ट विज़ार्ड (जहां मैं क्या एक डेटाबेस का उपयोग करने के लिए चुन सकते हैं लाता है , सेवा या डेटा स्रोत के रूप में एक वस्तु) रीति से सब के ऊपर:

Report Wizard showing Data Source Configuration Wizard

जबकि, MVC परियोजना सिर्फ बिना डेटा स्रोत रिपोर्ट विज़ार्ड लाया में एक नई रिपोर्ट विज़ार्ड आइटम जोड़ने के लिए चुनने कॉन्फ़िगरेशन विज़ार्ड:

Report Wizard without the Data Source Configuration Wizard

मैं अपने MVC परियोजना में व्यापार वस्तु वर्गों को जोड़ने, यह recompiling और उसके बाद फिर MVC परियोजना के लिए एक रिपोर्ट जोड़ने की कोशिश की, लेकिन मैं अभी भी, दूसरा स्क्रीनशॉट मिला तो ऐसा लगता है जैसे तुम सिर्फ नहीं मिलता किसी कारण से एमवीसी परियोजनाओं में जोड़ते समय डेटा स्रोत कॉन्फ़िगरेशन विज़ार्ड।

+1

अद्यतन के लिए धन्यवाद। मैंने नौकरियों को स्थानांतरित कर लिया है, और हम यहां आरडीएलसी का उपयोग नहीं करते हैं, इसलिए मैंने स्थिति के बराबर नहीं रखा है। अभी भी इसे लागू करने के लिए एक अजीब तरीका लगता है, लेकिन शायद इसके पीछे एक कारण है। – War2d2

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