2010-05-11 12 views
5

Google पर एक अच्छा 3 से 4 घंटे खर्च करने के बाद मेरी समस्या का कोई समाधान ढूंढने की कोशिश करने के बाद मुझे बहुत भाग्य नहीं मिला।क्रिस्टल रिपोर्ट्स विफल डेटाबेस डेटाबेस

असल में, हम अपने .NET अनुप्रयोगों के लिए एक एसक्यूएल सर्वर बैक एंड के साथ क्रिस्टल रिपोर्ट का उपयोग करते हैं, हमारे पास अपने स्वयं के सर्वर के साथ कई ग्राहक हैं और इसलिए हमारी रिपोर्टों को उनके कनेक्शन गतिशील रूप से सेट करने की आवश्यकता है। एक सप्ताह पहले तक यह ठीक काम किया। हालांकि कुछ दिन पहले एक ग्राहक ने बताया कि उन्हें एक रिपोर्ट के लिए डेटाबेस लॉगिन प्रॉम्प्ट मिल रहा था (केवल एक रिपोर्ट, बाकी ने ठीक काम किया)। हम काफी स्टंप थे लेकिन हम इसे नेटबुक पर पुन: पेश करने में कामयाब रहे, जिसमें विजुअल स्टूडियो या एसक्यूएल सर्वर स्थापित नहीं था। अंत में देव ने उम्मीद में रिपोर्ट को पुन: उत्पन्न करने का फैसला किया कि यह उस विशेष रिपोर्ट में सिर्फ एक विषमता थी।

दुर्भाग्य से आज एक नए ग्राहक को भी एक ही समस्या का सामना करना पड़ा, लेकिन इस बार हर क्रिस्टल रिपोर्ट के लिए - और उन्होंने नेटबुक पर भी काम किया, इसलिए हम वास्तव में यहां काफी हद तक खो गए हैं।

नीचे हमारे ग्राहकों क्या के साथ प्रस्तुत करने के का एक स्क्रीनशॉट है -

Screenshot http://img404.imageshack.us/img404/1375/loginf.png

और यहाँ कोड है कि मैं

   cI.ServerName = (string)builder["Data Source"]; 
       cI.DatabaseName = (string)builder["Initial Catalog"]; 
       cI.UserID = (string)builder["User ID"]; 
       cI.Password = (string)builder["Password"]; 

       foreach (IConnectionInfo info in cryRpt.DataSourceConnections) 
       { 
        info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password); 
       } 

       foreach (ReportDocument sub in cryRpt.Subreports) 
       { 
        foreach (IConnectionInfo info in sub.DataSourceConnections) 
        { 
         info.SetConnection(cI.ServerName, cI.DatabaseName, cI.UserID, cI.Password); 
        } 
       } 

हमेशा की रिपोर्ट में कनेक्शन जानकारी सेट करने के लिए उपयोग करें , किसी भी मदद की बहुत सराहना की।

उत्तर

2

समाधान मिला, यह कनेक्शन निर्माता बन गया कि क्लाइंट ने अपने सिस्टम को स्थापित करने के लिए उपयोग किया था, उदाहरण के नाम को नहीं रखा। बल्कि भ्रमित रूप से .net ऐप ने इसके साथ ठीक काम किया। हालांकि, उस क्रमबद्ध क्रिस्टल रिपोर्ट के साथ अब बेकार ढंग से काम करते हैं।

आपके इनपुट क्रेग के लिए धन्यवाद।

+0

मुझे एक समान समस्या का सामना करना पड़ रहा है, क्या आप बता सकते हैं कि कनेक्शन निर्माता द्वारा और आपके कोड में आपका क्या मतलब है? धन्यवाद –

2

शायद समस्या यह है कि आप प्रमाणीकरण जानकारी सेट करते हैं। क्या आपने ReportDocument.SetDatabaseLogon विधि का उपयोग करने पर विचार किया है? रिपोर्ट में प्रत्येक अद्वितीय डीबी कनेक्शन के लिए इसे एक बार कॉल करें। यह रिपोर्ट में सभी तालिकाओं को गिनने की आवश्यकता को खत्म कर देगा और, जैसा कि मुझे याद है, सबरेपोर्ट्स टेबल को भी गिनने की आवश्यकता है।

+0

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

+0

क्या डाटाबेस फ़ील्ड सेट हो जाता है? यदि रिपोर्ट आपको संकेत देती है तो उचित लॉगऑन प्रमाण-पत्र प्रदान करते हैं, तो क्या रिपोर्ट अपेक्षित कार्य करती है? – craig

+0

यदि आप SetDatabaseLogon में मानों को हार्ड-कोड करते हैं, जैसे ReportDocument।SetDatabaseLogon ("खाता", "पासवर्ड", "डेटाबेस", "सर्वर"), क्या यह काम करता है? यह सुनिश्चित करने के लिए कि सब्रेपोर्ट की लॉगऑन जानकारी सेट की जा रही है, इस बिट को अपने सबरेपोर्ट लूप में भी जोड़ें। मुझे बताएं कि यह कैसे काम करता है और हम अगले परीक्षण का प्रयास करेंगे। – craig

0

इसी तरह की समस्या के समाधान की तलाश में मुझे इस प्रश्न पर लाया गया। मेरी समस्या/समाधान थोड़ा अलग था, लेकिन मैं अपनी समस्या के साथ दूसरों का अनुमान लगा रहा हूं, यहां मेरा अंत हो जाएगा, इसलिए मैं अपना समाधान यहां पोस्ट करूंगा।

अपने उपयोगकर्ताओं को कुछ इस तरह देख रहे हैं जब एक रिपोर्ट का पूर्वावलोकन करने की कोशिश कर रहा: जब रिपोर्ट का एसक्यूएल सर्वर लॉगिन जानकारी की स्थापना तो

Crystal Reports Viewer screen shot

, सुनिश्चित करें कि आप सेवा नाम शामिल हैं। तो, उदाहरण के लिए, सुनिश्चित करें कि आप केवल "माइसेवर" की बजाय क्रिस्टल "माइसेवर \ myservice" दे रहे हैं।

मेरा प्रोग्राम सिर्फ "माइसेवर" का उपयोग कर SQL सर्वर से डेटा तक पहुंचने में सक्षम है, लेकिन क्रिस्टल को "myserver \ myservice" दिया जाना चाहिए।

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