2009-02-26 9 views
6

मेरी क्रिस्टल रिपोर्ट बनाते समय मैंने स्पष्ट रूप से एक डेटाबेस और सर्वर कनेक्शन स्थापित किया जिसे मैं विकास के लिए उपयोग करता हूं।रनटाइम पर क्रिस्टल रिपोर्ट डेटा स्रोत सेट करना

अब मैं अपने वीबी अनुप्रयोग में क्या करना चाहता हूं, रिपोर्ट के साथ उपयोग करने के लिए गतिशील रूप से डेटाबेस और सर्वर नाम सेट करना है। मेरे पास ये मान स्ट्रिंग्स varServer और varDatabase के रूप में हैं।

कोई भी जानता है कि यह करने के बारे में कैसे जाना है?

अग्रिम धन्यवाद।

पीएस मैंने कई ऑनलाइन समाधानों की कोशिश की है लेकिन वीबी 6 के साथ परेशानी हो रही है।

उत्तर

4

This link में सभी जानकारी है जो आप जानना चाहते हैं।

अद्यतन: यहां SQL सर्वर के साथ एकीकृत प्रमाणीकरण के लिए न्यूनतम कार्य नमूना है। कनेक्शन पैरामीटर सेट करने के लिए आपको टेबल ऑब्जेक्ट की कनेक्शनप्रॉपर्टीज का उपयोग करना चाहिए।

Dim app As New CRAXDDRT.Application 
Dim rpt As CRAXDDRT.Report 
Dim tbl As CRAXDDRT.DatabaseTable 
Dim tbls As CRAXDDRT.DatabaseTables 

Set rpt = app.OpenReport("C:\report\repotest.rpt") 

For Each tbl In rpt.Database.Tables 
    tbl.ConnectionProperties.DeleteAll 
    tbl.ConnectionProperties.Add "Provider", "SQLOLEDB" 
    tbl.ConnectionProperties.Add "Data Source", "localhost" 
    tbl.ConnectionProperties.Add "Initial Catalog", "testdb" 
    tbl.ConnectionProperties.Add "Integrated Security", "True" ' cut for sql authentication 
    'tbl.ConnectionProperties.Add "User Id", "myuser" ' add for sql authentication 
    'tbl.ConnectionProperties.Add "Password", "mypass" ' add for sql authentication 
Next tbl 

'This removes the schema from the Database Table's Location property. 
Set tbls = rpt.Database.Tables 
For Each tbl In tbls 
    With tbl 
     .Location = .Name 
    End With 
Next 

'View the report 
Viewer.ReportSource = rpt 
Viewer.ViewReport 
+0

लिंक के लिए धन्यवाद यह वास्तव में आवश्यक है लगता है। क्या आप जानते हैं कि उपयोगकर्ता नाम और पासवर्ड छोड़ने का कोई तरीका है या नहीं? हमारा ग्राहक डीबी से कनेक्ट करने के लिए विंडोज प्रमाणीकरण का उपयोग करता है। धन्यवाद फिर से –

+0

जब मैं उदाहरण कोड का प्रयास करता हूं तो मुझे 'उपयोगकर्ता-परिभाषित प्रकार परिभाषित नहीं किया जाता है' त्रुटि 'Dim logInfo के रूप में नई TableLogOnInfo' पर, किसी भी विचार से मुझे क्या संदर्भ याद आ रहा है? –

0

क्रिस्टल का आप किस संस्करण का उपयोग कर रहे हैं?

नेट दुनिया में, मैं आम तौर पर रिपोर्ट में डेटासेट पास करता हूं क्योंकि एमोरो here कहता है।

इस तरह, आपका कनेक्शन क्रिस्टल की बजाय कोड से सेट है और इसे वैश्विक कनेक्शन प्रॉपर्टी में संग्रहीत किया जा सकता है। हालांकि, वह .NET है। मैं सोच रहा हूं कि आपके पास क्रिस्टल के संस्करण की समान कार्यक्षमता होनी चाहिए या Emoreau का एक उदाहरण हो सकता है कि आप जिस संस्करण का उपयोग कर रहे हैं उसमें वीबी 6 में इसे कैसे किया जाए।

आशा है कि आप शुरू कर लेंगे।

+0

मैं क्रिस्टल रिपोर्ट 11 (एक्सआई) और वीबी 6 का उपयोग कर रहा हूं। रिपोर्ट को डिज़ाइन करने के लिए मुझे फ़ील्ड को लेआउट करने के लिए डेटाबेस जोड़ने की आवश्यकता है और अब आप सुझाव देते हैं जैसे कोड के माध्यम से servername और डेटाबेस नाम सेट करना चाहते हैं। अब उस लिंक पर पढ़ना धन्यवाद। –

1

ग्रेट वर्क! कोड के लिए धन्यवाद! मैं हालांकि यह थोड़ा बदल क्योंकि इस हिस्से काम नहीं कर रहा था:

With Me.CRViewer91 
    .ReportSource = rpt 
    .ViewReport 
End With 
0

एक भी कर सकते हैं:

'View the report 
Viewer.ReportSource = rpt 
Viewer.ViewReport 

यह एक त्रुटि है कि वस्तु नहीं पा सके

तो मैं ऐसा किया था इस कोड बिट को जोड़कर रिपोर्ट के लिए डिफ़ॉल्ट प्रदाता सेट करें।

Dim MyProvider As Object = logOnInfo.ConnectionInfo.LogonProperties.LookupNameValuePair("Provider") 
      If IsNothing(MyProvider) = False Then 
       MyProvider.Value = "SQLOLEDB" 
      End If 
संबंधित मुद्दे