मैं एक पुरानी माइक्रोसॉफ्ट एक्सेस रिपोर्ट को क्रिस्टल रिपोर्ट में बदलने की कोशिश कर रहा हूं। मेरे पास इस आखिरी छोटे विवरण को छोड़कर सब कुछ पूरी तरह से काम कर रहा है। एक्सेस रिपोर्ट रिपोर्ट के किसी एक फ़ील्ड के लिए if स्टेटमेंट में DSUM फ़ंक्शन का उपयोग करती है।

बहुत खोज करने के बाद, मैंने पाया है कि सीआर में ऐसा कुछ भी नहीं है।

यहाँ मूल रूप से मैं किसके साथ काम कर रहा हूँ।

मेरे पास एक प्रस्ताव रिपोर्ट है। रिपोर्ट के विवरण में मैं मात्रा, विवरण और कुछ मूल्य क्षेत्रों को प्रिंट करता हूं।

डेटा कुछ इस तरह दिखता है:

प्रस्ताव पार्टिटम रोल्टोआइटम यूनिटप्राइस

18611……….1……… नल…….0.00

18611……….2…… नल.......17225.92

18611............3............ 2............156.90

18611............4............. 2............482.05

मुझे क्या करना है जब मैं एक विशिष्ट भाग को प्रिंट करता हूं, तो मुझे बाकी रिकॉर्ड्स के माध्यम से पूछताछ करने की आवश्यकता होती है ताकि उन हिस्सों को ढूंढ सकें जिनके पास रोलटोइटम फ़ील्ड में मिलान संख्या है और मैं जिस हिस्से को प्रिंट कर रहा हूं उसमें यूनिटप्राइस जोड़ें।

तो इस उदाहरण में जब मैं partitem #2 प्रिंट करता हूं, तो मुझे 156.90 और 482.05 को भाग 3 और 4 से 17225.92 में जोड़ना होगा, इसलिए मैं कुल 17864.87 प्रिंट करता हूं।

क्या इसे करने का कोई तरीका है?

0
J S 26 सितंबर 2017, 23:50

2 जवाब

जहाँ तक मुझे पता है, ऐसा कोई कार्य नहीं है।

लेकिन मैं यह कोशिश करूंगा।

सामान्य विचार यह है: प्रस्तावनम द्वारा डेटा को समूहित करें और "बच्चों की पंक्तियों" का चयन करने के लिए एक सबरेपोर्ट का उपयोग करें और "बच्चों की कीमतों" का योग करें।

विवरण:

  1. PartItem द्वारा एक खाली समूह अनुभाग बनाएं।
  2. यदि आप केवल उन वस्तुओं को दिखाना चाहते हैं जहां RoolToItem शून्य है, तो इस मामले के लिए एक दबाने वाले फ़ंक्शन का उपयोग करें।
  3. विवरण अनुभाग में, एक सबरिपोर्ट डालें। सबरिपोर्ट का डेटा स्रोत मुख्य रिपोर्ट के समान होगा।
  4. फ़ील्ड के आधार पर सबरेपोर्ट में डेटा का चयन करने के लिए सबरेपोर्ट लिंक बदलें: मुख्य रिपोर्ट में पार्टआइटम = सबरेपोर्ट में रोल्टोइटम।
  5. चुनिंदा डेटा के बिना सबरेपोर्ट में अन्य फ़ील्ड पास करें: प्रस्तावनम, पार्टआइटम, यूनिटप्राइस। मुझे लगता है कि ऐसा करने से पहले आपको सबरेपोर्ट्स में पैरामीटर बनाने की जरूरत है - उदाहरण: पेरेंटप्रपोजलनम, पेरेंटपार्टइटम, पेरेंटयूनीटप्राइस।
  6. एक नया फ़ॉर्मूला बनाएं: ParentUnitPrice + Sum ({YourDataSource.UnitPrice})
  7. सबरेपोर्ट फ़ुटर में सूत्र को अन्य फ़ील्ड के साथ long रखें। हो सकता है: पेरेंटप्रपोजलनम, पेरेंटपार्टइटम, फॉर्मूला।

यह एक सैद्धांतिक समाधान है। मुझे आशा है कि यह सही दिशा की ओर इशारा करता है।

0
heringer 27 सितंबर 2017, 16:31

यदि आप उन सभी आइटम्स के लिए यूनिटप्राइस कॉलम का योग करने का प्रयास कर रहे हैं, जिनका रोलटोइटम में समान मूल्य है, तो आप इसे SQL एक्सप्रेशन फ़ील्ड के साथ कर सकते हैं। कोड कुछ इस तरह दिखेगा। माई व्हेयर क्लॉज को ट्वीक करने की आवश्यकता हो सकती है, हालांकि मुझे यकीन नहीं है कि आपकी डेटाबेस संरचना कैसी दिखती है।

(
Select Sum("YourDataBaseTableName"."Unitprice")
From YourDataBaseTableName
Where "YourDataBaseTableName"."Rolltoitem" = *currentRolltoitemValue*
)

आप किस प्रकार के डेटाबेस का उपयोग कर रहे हैं, इसके आधार पर SQL अभिव्यक्ति फ़ील्ड के लिए सिंटैक्स भी भिन्न हो सकता है। मेरे द्वारा प्रदान किया गया सिंटैक्स काफी सामान्य है, लेकिन SQL सर्वर पर काम करना चाहिए।

संपादित करें: यह कैसे काम करता है इसकी व्याख्या के साथ उदाहरण जोड़ना।

यहां क्रिस्टल रिपोर्ट से मेरे SQL अभिव्यक्ति फ़ील्ड में से एक है जो शिप किए गए सामानों के लिए बिल ऑफ लीडिंग प्रिंट करता है।

(   
Select  Sum("SHIPMENTS"."PALLET_COUNT")
From    SHIPMENTS
Where   "SHIPMENTS"."BOL_ID" = "BOL"."ID"
)

मेरे डेटाबेस में BOL तालिका प्रारंभिक बिंदु है। एक सिंगल बीओएल में 1 या अधिक शिपमेंट हो सकते हैं, और एक शिपमेंट में एक या अधिक उत्पाद हो सकते हैं। शीर्ष स्तरीय ग्रुपिंग BOL.ID पर है। PALLET_COUNT प्रत्येक SHIPMENTS पर एक बार और केवल एक बार पाया जाता है। मुझे विवरण अनुभाग में डेटा के लिए एक सॉर्टिंग आवश्यकता भी थी जिसने मुझे रनिंग टोटल फील्ड का उपयोग करने से रोका।

यह 2 SHIPMENTS के साथ एक BOL की अनुमति देता है जिसमें इस तरह दिखने के लिए कुल 3 उत्पाद होते हैं:

BOL.ID    SHIPMENTS.ID    SHIPMENTS.BOL_ID    PALLET_COUNT    PRODUCT.ID
1         10              1                   2               XXX
1         9               1                   1               YYY
1         10              1                   2               ZZZ

इस BOL के लिए सही PALLET_COUNT 3 होना चाहिए, क्योंकि PRODUCTS XXX और ZZZ एक ही SHIPMENTS में हैं और PALLET_COUNT को PRODUCTS के साथ इसके संबंध के कारण डुप्लिकेट किया गया है।

0
R. McMillan 6 अक्टूबर 2017, 15:22
यह केवल तभी काम करता है जब currentRolltoitemValue स्थिर हो। जैसे अगर मैं 2 में हार्डकोड करता हूं, तो यह बहुत अच्छा काम करता है। लेकिन मुझे अपने द्वारा प्रिंट किए जा रहे वर्तमान रिकॉर्ड से रोलटोइटम नंबर इनपुट करने की आवश्यकता है। मुझे नहीं पता कि ऐसा करने का कोई तरीका है या नहीं।
 – 
J S
5 अक्टूबर 2017, 22:12
देखें कि ऊपर दिया गया मेरा संपादन किसी को यह समझने में मदद करता है कि वर्तमान मूल्य कैसे प्राप्त करें। मुझे लगता है कि मैं इसे पूरी तरह से अच्छी तरह से समझा नहीं रहा हूं। यह उन चीजों में से एक है जो मेरे दिमाग में सही समझ में आता है, लेकिन जब मैं इसे समझाने की कोशिश करता हूं तो यह जटिल हो जाता है। मैं अपने विचारों को अधिक स्पष्ट रूप से व्यक्त करने में सक्षम नहीं होने के लिए क्षमा चाहता हूं।
 – 
R. McMillan
6 अक्टूबर 2017, 15:24