यह एक InfoPath समाधान के लिए संभावित उम्मीदवार की तरह लगता है। पहले ब्लश पर, यह आपके द्वारा पूछे जाने वाले अधिकांश/अधिकांश कार्य करेगा।
यह आलेख एक SQL डेटा स्रोत पर आधारित एक InfoPath फ़ॉर्म बनाने का एक संक्षिप्त अवलोकन देता है।
http://office.microsoft.com/en-us/infopath-help/design-a-form-template-based-on-a-microsoft-sql-server-database-HP010086639.aspx
मैं का निर्माण किया है आप की तरह एक पूरी तरह से कस्टम समाधान का वर्णन कर रहे हैं, और अगर मैं कभी इसे फिर से किया था मैं शायद या तो 1) एक तीसरे पक्ष के उत्पाद के लिए चुनते हैं 2) कम कार्यक्षमता होगा। आप अपने सेट का 9 0% फीचर सेट के 10% पर काम कर सकते हैं।
संपादित करें: अपने प्रश्नों को दोबारा पढ़ें और यहां अतिरिक्त प्रतिक्रिया है।
1 - लचीला डेटा संरचना: ध्यान में रखने के लिए कुछ चीजें प्रदर्शन और डेटा के खिलाफ रिपोर्ट लिखने की क्षमता हैं। अधिक सामान्य डेटा संरचना, इन्हें हासिल करना कठिन होगा (फिर से, अनुभव से बोलना)।
दोनों प्रदर्शन करने के लिए कुछ हद तक इसके विपरीत तथा रिपोर्ट-तत्परता, माइक्रोसॉफ्ट SharePoint अधिकतम लचीलापन के लिए सामान्य तालिकाओं में एक्सएमएल टुकड़े/दस्तावेजों का उपयोग करता है। मैं शेयरपॉइंट की विशेषताओं के साथ बहस नहीं कर सकता, इसलिए यह काम पूरा हो जाता है और डेटा संरचना को बहुत सरल बनाता है। एक्सएमएल सही तरीके से करने पर अच्छा प्रदर्शन करेगा, लेकिन अधिकांश लोगों को एक्सएमएल के खिलाफ प्रश्न लिखना अधिक कठिन लगेगा। हालांकि एक्सएमएल एसक्यूएल सर्वर के लिए "प्रथम श्रेणी नागरिक" है, फिर भी यह एक अनुकूलित तालिका संरचना के साथ-साथ प्रदर्शन भी कर सकता है या नहीं।
2 - फॉर्म: मैंने एक्सएसएलटी द्वारा एक्सएमएल का उपयोग करके कस्टम फॉर्म लागू किए हैं। एक्सएमएल अक्सर फॉर्म संरचना को स्टोर करने के लिए एक अच्छा विकल्प है; एक्सएसएलटी खुद के लिए एक राक्षस है, लेकिन यह बहुत शक्तिशाली है। इसके लायक होने के लिए, इन्फोपाथ एक्सएमएल के रूप में अपनी फॉर्म संरचना को स्टोर करता है।
मैंने .NET में कस्टम नियंत्रणों का उपयोग करके गतिशील रूपों को भी कार्यान्वित किया है। यह एक बहुत ही ऑब्जेक्ट उन्मुख दृष्टिकोण है, लेकिन (यूआई की जटिलता के आधार पर) को कोड की एक महत्वपूर्ण मात्रा की आवश्यकता हो सकती है।
आखिरकार (फिर से एक उदाहरण के रूप में शेयरपॉइंट का उपयोग कर), माइक्रोसॉफ्ट ने शेयरपॉइंट 2007 में बेहद जटिल XML सूची/फॉर्म परिभाषाओं को लागू किया। जटिलता कई लाभों को हरा देती है। दूसरे शब्दों में, यदि आप एक्सएमएल रूट जाते हैं, तो अपनी संरचनाओं को साफ और सरल बनाएं या आपके हाथों पर रखरखाव दुःस्वप्न होगा।
संपादित करें # 2: स्कॉट के प्रश्न के संदर्भ में, यहां एक उच्च स्तरीय डेटा संरचना है जो डुप्लिकेट डेटा से बच जाएगी और अधिकांश प्रारूप परिभाषा के लिए एक्सएमएल पर भरोसा नहीं करती है।
चेतावनी: मैं सिर्फ इस डिजाइन एक साथ रखा एसक्यूएल प्रबंधन स्टूडियो में ... मैं केवल 10 मिनट इस पर खर्च; एक लचीला रूप प्रणाली विकसित करना एक मामूली कार्य नहीं है, इसलिए यह एक अति-सरलीकरण है। यह उपयोगकर्ता द्वारा दर्ज डेटा के भंडारण को संबोधित नहीं करता है, केवल फॉर्म की परिभाषा।
टेबल:
फॉर्म - जो होता है (जैसा कि आप अनुमान लगा होता है) शीर्ष स्तर के रूप तालिका फ़ील्ड प्रपत्र शामिल का संग्रह।
फ़ील्ड - जेनेरिक फ़ील्ड जिन्हें फ़ॉर्म भर में पुन: उपयोग किया जा सकता है। उदाहरण के लिए, आप 50 अलग-अलग रूपों के लिए 50 अलग-अलग "अंतिम नाम" फ़ील्ड नहीं चाहते हैं। "DataTypeId" कॉलम पर ध्यान दें। आप इस कॉलम में "नंबर," फ्री टेक्स्ट "जैसे किसी भी प्रकार को स्टोर कर सकते हैं, यहां तक कि एक मान जो इंगित करता है कि उपयोगकर्ता को सूची से चुनना चाहिए।
फॉर्मफ़िल्ल्ड - इसमें एक फॉर्म को 0-फ़ील्ड शामिल करने की अनुमति देता है परिभाषा। आप यह तालिका भी विस्तारित कर सकते हैं यह इंगित करने के लिए कि उपयोगकर्ता इस क्षेत्र में से कई को जोड़ सकते हैं।
बाधा - मूल रूप से एक लुकअप तालिका जो एक बाधा प्रकार को परिभाषित करती है (शायद यह अधिकतम लंबाई, अधिकतम घटनाएं, आवश्यक है, इत्यादि)
फॉर्मफ़िल्ल्डकोनस्ट्रेन - एक फॉर्म फ़ील्ड के किसी विशेष उदाहरण के लिए एक बाधा से संबंधित है। यह तालिका एक विशिष्ट फ़ील्ड को विशिष्ट बाधा के साथ एक विशिष्ट फ़ील्ड के साथ जोड़ती है। मेटाडेटा कोलम नोट करें n; एक्सएमएल के लिए बाधा के विनिर्देशों को स्टोर करने के लिए यह संभवतः एक अच्छा उपयोग होगा।
अनिवार्य रूप से, मैं सुझाव देता हूं कि सामान्यीकृत डेटाबेस को कम या कोई शून्य मान और कोई डुप्लिकेट डेटा न हो। जैसा कि मैंने वर्णन किया है, एक संरचना आपको उस लक्ष्य के रास्ते पर ले जाएगी।
धन्यवाद। 1) मैं xml में सभी डेटा स्टोर करने के लिए परेशान होगा। जहां तक सामान्य डेटा संरचना, मैंने सूचीबद्ध दो विकल्पों (ए और बी) में से कौन सा कठिन होगा? मुझे लगता है कि बी आसान समाधान होगा। इस बात से सहमत? 2) मुझे फॉर्म के लिए बेहतर (स्वच्छ) एक्सएमएल बेहतर और बेहतर विचार पसंद है, मुझे एक्सएसएलटी में देखना होगा, मुझे इसके बारे में बहुत कुछ पता नहीं है। मुझे यह जानकर उत्सुकता है कि आपने .NET में कस्टम नियंत्रण कैसे बनाया। मैं उपयोगकर्ता नियंत्रण बनाने के बारे में सोच रहा था (टेक्स्टबॉक्स, ड्रॉपडाउन, आदि के लिए एक), लेकिन आप डीबी को पढ़ने/लिखने के लिए लिंक कैसे बनाते हैं? – scojomodena
@ स्कॉट जे - कृपया मेरी अपडेट की गई पोस्ट देखें। मैंने एक उदाहरण पोस्ट किया है जिसे आप विकल्प बी में उल्लेख कर रहे डुप्लिकेशन को खत्म कर सकते हैं। कस्टम नियंत्रण के संबंध में ... उपयोगकर्ता नियंत्रण भी ठीक काम करेगा, जब तक कि आपको उन्हें असेंबली में साझा करने की आवश्यकता न हो। प्रत्येक नियंत्रण को शायद एक सामान्य इंटरफ़ेस लागू करना चाहिए जो उन्हें डेटा के साथ पॉप्युलेट करने और उनके द्वारा एकत्रित डेटा प्राप्त करने की अनुमति देता है। ये नियंत्रण अभिभावक पृष्ठ/नियंत्रण पर रखे जाएंगे, जो समझते हैं कि उनसे डेटा एकत्रित करने और इसे व्यवसाय स्तर पर कैसे पारित किया जाए। इनपुट के लिए –