आप इसके बाद मेरे द्वारा उपयोग की जाने वाली प्रक्रिया को पाएंगे (मैंने इसे मक्खी पर सरल बनाया, अपनी वस्तुओं और वैश्विक चर को दबाते हुए)। यह प्रक्रिया एक रिपोर्ट को विकास के समय उपयोग किए गए मूल कनेक्शन से सक्रिय SQL सर्वर पर पुनर्निर्देशित करने की अनुमति देती है। यह वीबी में लिखा गया है और 2 मुख्य वस्तुओं का उपयोग करता है:
- क्रिस्टल रिपोर्ट के एक उदाहरण के माध्यम से खोली गई मूल रिपोर्ट वस्तु
- वर्तमान SQL सर्वर से सक्रिय कनेक्शन (जिसे P_currentConnection कहा जाता है) होने के नाते ADODB कनेक्शन
एप्लिकेशन में रिपोर्ट ऑब्जेक्ट को देखने/प्रिंट करने से पहले यह फ़ंक्शन (उप भी हो सकता है) कहा जाता है। इसका उपयोग प्रतिकृति डेटाबेस के बीच रिपोर्ट वितरित करते समय किया जा सकता है जहां उपयोगकर्ता, उनके स्थान के आधार पर, विभिन्न सर्वर/डेटाबेस से कनेक्ट होते हैं।
Public Function connectReportToDatabase( _
P_report As CRAXDRT.Report)
Dim table As CRAXDRT.DatabaseTable, _
For Each table In P_report.Database.tables
If table.DllName <> "crdb_ado.dll" Then
table.DllName = "crdb_ado.dll"
End If
table.ConnectionProperties.DeleteAll
table.ConnectionProperties.Add "Provider", P_currentConnection.Provider
table.ConnectionProperties.Add "Data source", P_currentConnection.Properties("Data source").Value
table.ConnectionProperties.Add "Database", P_currentConnection.DefaultDatabase
table.ConnectionProperties.Add "Integrated security", P_currentConnection.Properties("Integrated security").Value
table.ConnectionProperties.Add "Persist Security Info", P_currentConnection.Properties("Persist Security Info").Value
table.ConnectionProperties.Add "Initial Catalog", P_currentConnection.Properties("Initial Catalog").Value
table.SetTableLocation table.location, "", P_currentConnection.ConnectionString
table.TestConnectivity
Next table
इसे एक प्रक्रिया के साथ बुलाया जा सकता है जैसे:
Dim crystal As CRAXDRT.Application, _
m_report as CRAXDRT.report
Set crystal = New CRAXDRT.Application
Set m_rapport = crystal.OpenReport(nameOfTheReport & ".rpt")
connectreportToDatabase(m_report)
यदि आपकी रिपोर्ट में उप-रिपोर्ट शामिल हैं, तो आपको उन्हें सक्रिय कनेक्शन पर पुनर्निर्देशित भी करना पड़ सकता है। इस मामले में, आपको अपनी रिपोर्ट में सभी वस्तुओं को ब्राउज़ करना होगा, रिपोर्ट प्रकार की वस्तुओं की जांच करनी होगी और उन्हें नए कनेक्शन पर पुनर्निर्देशित करना होगा। मुझे यकीन है कि आपको इस मूल प्रक्रिया में संबंधित अतिरिक्त पंक्तियों को जोड़ने में मज़ा आएगा।