2011-02-16 11 views
6

क्रिस्टल संस्करण के लिए एक पैरामीटर जोड़ना उपयोगकर्ता से इनपुट पर। मेरा सवाल यह है कि पैरामीटर को स्वीकार करने के लिए 'कहां' खंड की पहली पंक्ति में मुझे सही वाक्यविन्यास क्या है?क्रिस्टल रिपोर्टें - क्रिस्टल रिपोर्टें 2008 व्यापार वस्तुओं - - इलेवन</p> <p>मैं एक subreport को भरने के लिए एक प्रश्न के लिखित और आधारित है कि क्वेरी के लिए एक पैरामीटर में खींचने के लिए चाहते हैं एक 'कमांड' क्वेरी

Select 
Projecttname, 
ReleaseDate, 
TaskName 

From DB_Table 

Where 
(Project_Name like {?Pm-?Proj_Name})) and 
(ReleaseDate) >= currentdate 
+0

मैंने एसक्यूएल के शीर्ष पर एक चर घोषित करने और सेट करने का प्रयास किया है और जब भी मैं सबरेपोर्ट के एसक्यूएल को देखता हूं, तब भी मुझे SQL में चयनित पैरामीटर दिखाई नहीं देता है। क्या मुझसे कुछ गलत हो रही है? @ProjName varchar घोषित (200) सेट @ProjName = '{? बजे? Proj_Name}' का चयन करें Projecttname, RELEASEDATE, TaskName DB_Table से कहाँ (प्रोजेक्ट) @ProjName की तरह और (RELEASEDATE)> = currentdate –

उत्तर

6

समाधान मैं के साथ आया था इस प्रकार थी:

  1. अपने पसंदीदा क्वेरी पर डेवलपर टूल में SQL क्वेरी बनाएं
  2. क्रिस्टल रिपोर्ट में, मुख्य रिपोर्ट के भीतर, subreport
  3. को पारित करने के लिए पैरामीटर बनाने
  4. 'रिपोर्ट निर्माण विज़ार्ड' के 'डेटा' भाग में 'कमांड जोड़ें' विकल्प और # 1 से SQL क्वेरी का उपयोग करके उप रिपोर्ट बनाएं।
  5. एक बार subreport मुख्य रिपोर्ट में जोड़ा जाता है, सही subreport पर क्लिक करें, चुनें 'बदलें Subreport लिंक ...', लिंक फ़ील्ड का चयन करें, और 'क्षेत्र के आधार पर subreport में डेटा का चयन करें:' सही का निशान हटाएँ

    नोट: आपको प्रारंभ में 'फ़ील्ड के आधार पर उप -port में डेटा का चयन करें' के साथ पैरामीटर जोड़ना पड़ सकता है, फिर 'सबरेपोर्ट लिंक बदलें' पर वापस जाएं और सब्रेपोर्ट बनने के बाद इसे अनचेक करें।

  6. सबरेपोर्ट में, 'रिपोर्ट' मेनू पर क्लिक करें, 'विशेषज्ञ चुनें', 'फॉर्मूला संपादक' का उपयोग करें, # 1 से SQL कॉलम को या तो # 4 में चयनित पैरामीटर (ओं) के बराबर या सेट करें।

       (Subreport SQL Column) (Parameter from Main Report) 
         Example: {Command.Project} like {?Pm-?Proj_Name} 
    
+2

क्रिस्टल स्तर पर फ़िल्टरिंग बहुत अक्षम है। जब संभव हो तो डेटाबेस स्तर पर फ़िल्टर करना बेहतर होता है। – Sun

0

इस प्रयास करें::

Select Project_Name, ReleaseDate, TaskName 
From DB_Table 
Where Project_Name like '{?Pm-?Proj_Name}' 
    And ReleaseDate >= currentdate 

CURRENTDATE एक वैध डेटाबेस समारोह या क्षेत्र काम करने के लिए किया जाना चाहिए

क्वेरी मैं क्रिस्टल रिपोर्ट में उपयोग कर रहा हूँ है। यदि आप एमएस एसक्यूएल सर्वर का उपयोग कर रहे हैं, तो इसके बजाय GETDATE() का उपयोग करें।

यदि आप चाहते हैं कि मुख्य रिपोर्ट से पैरामीटर के आधार पर एक सबरेपोर्ट में रिकॉर्ड फ़िल्टर करना है, तो बस सबरेपोर्ट में तालिका को जोड़ना आसान हो सकता है, और फिर मुख्य रिपोर्ट और सबरेपोर्ट के बीच एक Project_Name लिंक बनाएं। फिर आप रिलीजडेट को फ़िल्टर करने के लिए विशेषज्ञ का चयन भी कर सकते हैं।

+0

क्या यह काम करेगा? जहां Project_Name पसंद है? '{? पीएम-? Proj_Name}' जब मैं क्वेरी चलाता हूं और 'डेटाबेस' पर जाता हूं, 'एसक्यूएल दिखाएं', मुझे अभी भी '{? Pm-? Proj_Name}' टेक्स्ट दिखाई देता है और पैरामीटर नहीं मैंने प्रवेश किया। क्या वो सही है? –

+0

इसलिए मैंने SQL के शीर्ष पर एक चर घोषित करने और सेट करने का प्रयास किया है। –

+0

_ दिखाएं SQL_ अभी भी पैरामीटर नाम दिखाएगा। मुझे लगता है कि आप अपने क्लॉज में वाइल्डकार्ड का उपयोग करना चाहते हैं? आप इन एसक्यूएल वाइल्डकार्ड का उपयोग कर सकते हैं: %: सभी पात्रों से मेल खाते हैं। _: एक ही चरित्र से मेल खाता है। उदाहरण: 'जहां Project_Name'% {? Pm-? Proj_Name}% 'जैसे प्रोजेक्ट_नाम के साथ रिकॉर्ड लोड करने के लिए {? Pm-? Proj_Name} है। 'जहां Project_Name' _ {? Pm-? Proj_Name} 'की तरह प्रोजेक्ट_नाम के साथ रिकॉर्ड लोड करने के लिए {? Pm-? Proj_Name} से पहले एक अक्षर के साथ रिकॉर्ड लोड करने के लिए। –

9

जब आप कमांड में हों, तो नया पैरामीटर बनाने के लिए बनाएं पर क्लिक करें; इसे 'project_name' कहते हैं। एक बार इसे बनाने के बाद, इसे कमांड के टेक्स्ट में जोड़ने के लिए इसके नाम पर डबल क्लिक करें। आप जैसे लगते हैं चाहिए क्वेरी:

SELECT Projecttname, ReleaseDate, TaskName 
FROM DB_Table 
WHERE Project_Name LIKE {?project_name} + '*' 
AND ReleaseDate >= getdate() --assumes sql server 

अगर वांछित, इस ({? PROJECT_NAME}) मैदान पर subreport करने के लिए मुख्य रिपोर्ट को लिंक। यदि आप मुख्य और सबरेपोर्ट के बीच कोई लिंक स्थापित नहीं करते हैं, तो सीआर आपको सबरेपोर्ट के पैरामीटर के लिए संकेत देगा।

2008 से पहले के संस्करणों में, कमांड का पैरामीटर केवल स्केलर मान होने की अनुमति थी।

3
Select Projecttname, ReleaseDate, TaskName From DB_Table Where Project_Name like '%{?Pm-?Proj_Name}%' and ReleaseDate >= currentdate 

नोट एकल उद्धरण और वाइल्डकार्ड वर्णों। मैंने बस कुछ ऐसा ही पता लगाने में 30 मिनट बिताए।