2010-03-25 13 views
5

मुझे लगता है कि एक क्रिस्टल रिपोर्ट चल रहा है संग्रहीत प्रक्रिया के नाम को पुनः प्राप्त करने की आवश्यकता है उपयोग कर रहा है ढूँढना। वहाँ किसी भी तरह से सी # में यह करने के लिए CrystalDecisions.CrystalReports.Engine.ReportDocument वस्तु का उपयोग कर है?संग्रहीत प्रक्रिया है कि एक क्रिस्टल रिपोर्ट

मैं एक संपत्ति मुझे संग्रहीत प्रक्रिया नाम दे देंगे कि खोजने के लिए प्रतीत नहीं कर सकते हैं।

क्या यह भी संभव है? मैं लगभग सभी संपत्तियों के माध्यम से किया गया है जिनके बारे में मैं सोच सकता हूं। DataDefinition वस्तु फॉर्मूला, पैरामीटर, समूह का नाम, और कुल फील्ड्स चल रहा है के लिए संग्रह है, लेकिन डेटाबेस फ़ील्ड के लिए एक।

संपादित करें: मैं के रूप में मैं रिपोर्ट की एक बहुत कुछ है प्रोग्राम के ऐसा करने के लिए, की जरूरत है। मुझे रिपोर्ट की वास्तविक दौड़ को छोड़ने और केवल उस संग्रहीत प्रक्रिया को निष्पादित करने का विकल्प चाहिए जो रिपोर्ट का उपयोग करेगी। इसलिए जब कार्यक्रम का उपयोग कर डेटाबेस में रिपोर्ट जानकारी डाली जाती है, तो मैं अपनी संग्रहीत प्रक्रिया को खींचने और उस जानकारी को अलग से स्टोर करने में सक्षम होना चाहता हूं। RptToXml:

+0

सिर्फ एक बार या प्रोग्राम के पसंद करते हैं? अगर यह सिर्फ एक बार है, तो मेरा सुझाव है कि आप एसक्यूएल प्रोफाइलर को प्रश्न में डेटाबेस से संलग्न करें, रिपोर्ट का आह्वान करें और देखें कि यह क्या करता है। –

+0

प्रोग्रामेटिक रूप से। हमारे पास वास्तव में कुछ सौ रिपोर्ट हैं, लेकिन कुछ उपयोगकर्ता सीधे संग्रहित प्रक्रिया को चलाने का विकल्प चाहते हैं, और परिणाम CSV फ़ाइल में निर्यात किए गए हैं।यह लगभग सभी रिपोर्टों के लिए काम करता है, क्योंकि हमारे पास संग्रहित प्रक्रियाओं के लिए मानक नामकरण अभ्यास है, लेकिन कुछ अजीब मामले हैं। एक सूची बनाए रखने के बजाय, मैं बस इसे रिपोर्ट से बाहर खींचने और डेटाबेस में कहीं भी डाल सकता हूं। – Brandon

उत्तर

4

आप अपने आप को किक करने जा रहे हैं। सपा में हैं ...

ReportDocument.Database.Tables

DataBase

तो Table.Location

Table

भी subreports के बारे में भूल नहीं है ... जो ReportDocuments का एक और संग्रह है।

+0

आपको बहुत बहुत धन्यवाद। आपने अभी मुझे बहुत काम बचाया है, और मैं टेबल ऑब्जेक्ट की जांच न करने के लिए खुद को लात मार रहा हूं: पी – Brandon

0

इस परियोजना आज़मा कर देखें।

1

आप SQLServer प्रोफाइलर का उपयोग कर सकते हैं ताकि आप क्रिस्टल रिपोर्ट चलाते समय संग्रहीत प्रक्रिया को कॉल कर सकें।

सबसे पहले, आप सही विशेषाधिकार प्रोफाइलर को चलाने के लिए की आवश्यकता है।
दूसरे, आप का पता लगाने शुरू करने के लिए और तुरंत रिपोर्ट पर अमल की जरूरत है।
तीसरा, संग्रहीत प्रक्रिया (रों) रिपोर्ट निष्पादित के नाम देखने के लिए रोक ट्रेस & स्कैन।

+0

उत्तर के लिए धन्यवाद, लेकिन मुझे वास्तव में इस प्रोग्रामेटिक रूप से करने की जरूरत है। – Brandon

+0

क्या आप खुद को वर्डपैड या xmlnotepad जैसे संपादक में रिपोर्ट खोलने का प्रयास कर सकते हैं? शायद उसमें कुछ मेटाडाटा हो सकता है जिसे आप स्पोक के लिए खोज सकते हैं। – SoftwareGeek

0

आप कर सकते हैं उत्पादन इस कोड के साथ एक टेबल के विभिन्न गुण (खेद यह VB में है, कि क्या मैं इस परियोजना के लिए उपयोग करना पड़ता है):

निजी उप logLogOnInfo (तालिका तालिका के रूप में) log.DebugFormat ("LogOnInfo.ConnectionInfo {0}:", table.Name) Dim ci ConnectionInfo = table.LogOnInfo.ConnectionInfo लॉग। डेबग (स्ट्रिंग.फॉर्मैट ("अनुमति कस्टमकनेक्शन: {0}, डीबीएनएएम: {1}, एकीकृत सुरक्षा: {2} ", ci.AllowCustomConnection, ci.DatabaseName, ci.IntegratedSecurity)) log.Debug (String.Format (" सर्वर नाम: {0}, उपयोगकर्ता: {2}, पासवर्ड: {1}, गुण: ", ci.ServerName, ci.Password, ci.UserID))

For Each a As NameValuePair2 In ci.Attributes.Collection 
    If a.Name = "QE_LogonProperties" Then 
     Dim attributes As DbConnectionAttributes = a.Value 
     For Each b As NameValuePair2 In attributes.Collection 
      log.DebugFormat("  {0}: {1}", b.Name, b.Value) 
     Next 
    Else 
     log.DebugFormat(" {0}: {1}", a.Name, a.Value) 
    End If 
Next 

End Sub

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