2009-05-18 23 views
10

मैं आज की तारीख को किसी SharePoint सूची में किसी गणना कॉलम में उपयोग करने में सक्षम होना चाहता हूं, उदाहरण के लिए, यह निर्धारित करें कि कोई कार्य अतिदेय है या नहीं। एक अच्छी तरह से प्रलेखित चाल है जिसमें एक सूत्र में इसका उपयोग करके "आज" नामक एक डमी कॉलम बनाना और फिर इसे हटाना शामिल है, जिससे आज फ़ंक्शन का उपयोग करने में शेयरपॉइंट को "ट्रिकिंग" किया जाता है।आज परिकलित कॉलम समस्या का कोई समाधान SharePoint है?

समस्या यह है कि यह विधि विश्वसनीय रूप से काम नहीं करती है - गणना गतिशील नहीं है; यह केवल तब किया जाता है जब आइटम सहेजा जाता है, और इसलिए आज "कॉलम" प्रभावी रूप से संशोधित दिनांक बन जाता है। (शायद यही कारण है कि SharePoint आपको आज के फ़ंक्शन को सीधे-सीधे तरीके से उपयोग करने नहीं देगा।)

क्या किसी को कोई समाधान मिल गया है जो काम करता है? मुझे पता है कि मैं क्लाइंट साइड पर वास्तविक तिथि प्राप्त करने के लिए जावास्क्रिप्ट का उपयोग कर सकता हूं और रंग, झंडे, जो कुछ भी प्रदर्शित कर सकता हूं, लेकिन मैं एक "सर्वर साइड" समाधान ढूंढ रहा हूं।


संदर्भ के लिए, आज स्तंभ चाल और अपनी समस्याओं के इन दो पदों और संबंधित टिप्पणियों पर काफी अच्छा वर्णित हैं: http://blogs.msdn.com/cjohnson/archive/2006/03/16/552314.aspx और http://pathtosharepoint.wordpress.com/2008/08/14/calculated-columns-the-useless-today-trick/

उत्तर

4

इसके लिए बस एक काम नहीं है। चूंकि सूची के मान डेटाबेस में संग्रहीत किए जाते हैं और खोज क्रॉलर जैसे अन्य featurs के लिए "जैसा है" लौटाया जाता है, एक गतिशील फ़ील्ड नहीं बनाया जा सकता है।

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

+0

भविष्य पाठकों को एक आज परिकलित स्तंभ कोडिंग विचार कर रहे हैं आप, ठीक से ऐसा करने की कोशिश करने के अपने अनुभवों के बारे में पढ़ना चाहूंगा: http://blog.pentalogic.net/2011/08/how-not-to-develop-a-sharepointtoday-calculated-column/ –

0

मेरी सलाह बनाने के लिए है क्षेत्र है कि के लिए इस गणना करता है पर अपने आप और फिर इसे अपनी SharePoint सूची में संदर्भित करते हैं। एक आसान कार्यान्वयन नहीं है लेकिन यह काम करेगा।

0

मैं या तो कोई समाधान ढूंढ रहा हूं, फिर भी कोई भाग्य नहीं .. आज कॉलम चाल में गतिशील नहीं होने की सीमा है।

मेरे पास एक सुझाव है हालांकि, हम टाइमर नौकरी क्यों नहीं बनाते हैं जो वर्तमान दिन के साथ एक निश्चित कॉलम को प्रत्येक दिन 12 बजे अपडेट करेगा। मुझे पता है कि आप में से कुछ सभी इसे एक सिर पर सोच सकते हैं। बस मेरा सुझाव: डी !!

0

मैं किसी भी कोडिंग के बिना इस समस्या के बहुत कठिन, लेकिन कामकाजी समाधान के साथ आया था। मैं दोनों को समझाऊंगा कि मैंने आज कॉलम कैसे बनाया और मैंने इसे एक अतिदेय कॉलम में कैसे काम किया, क्योंकि उस कॉलम को यह पता लगाने में दर्द था कि यह कैसे करना है।

सबसे पहले, मैंने "आज" नामक एक कॉलम बनाया (gasp!)। इसके बाद मैंने "डेज़ ओवरड्यू" नामक एक कॉलम बनाया। मैंने फिर शेयरपॉइंट डिजाइनर खोला और एक नया वर्कफ़्लो बनाया। जब भी कोई आइटम संपादित/अपडेट किया जाता है, तो मैं इसे चलाने के लिए सेट करता हूं (ध्यान रखें कि मैंने इस सूची के लिए संस्करण बंद कर दिया है, अन्यथा मुझे हमारे सर्वर पर बेकार डेटा बिल्डिंग के समूह से बचने के लिए कोडिंग का सहारा लेना होगा)। मैंने कार्यों को वर्कफ़्लो वैरिएबल में संशोधित दिनांक को संग्रहीत करने के लिए सेट किया है, फिर उस चरम पर मान को उस चर में बदलें। हालांकि संशोधित कॉलम एक दिनांक/समय है और मेरा आज का कॉलम सिर्फ एक तारीख है, यह बस ठीक है। मैं फिर वर्कफ़्लो को 2 घंटों तक रोकने के लिए सेट करता हूं। आप इसे निश्चित रूप से जो भी समय चाहते हैं उसे सेट कर सकते हैं, यह आपके आज के कॉलम को अपडेट करने के लिए नवीनतम संभव समय बदल देगा, यानी मेरे मामले में 2AM।

दिनों के अतिदेय कॉलम पर।

=IF([Due Date]>Today,"None",IF([Date Closed]=0,Today-[Due Date],IF([Due Date]>[Date Closed],"None",IF(Today>=[Date Closed],[Date Closed]-[Due Date],IF([Due Date]<Today,Today-[Due Date]))))) 

इस दिन संख्या के रूप में समय से अपेक्षित दिनों में पता चलता है, या अगर अपने समय से अपेक्षित नहीं है, यह "कोई नहीं" से पता चलता है - यह है कि पुरुष के लिए कोड है।आप या तो एक संख्या प्रारूप या एक स्ट्रिंग प्रारूप का उपयोग कर सकते हैं, लेकिन एक DATE प्रारूप नहीं। खैर, मुझे उम्मीद है कि यह इस समस्या में चल रहे किसी भी व्यक्ति की मदद करता है और कोडिंग में प्रवेश नहीं करना चाहता।

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

संपादित करें 2: मेरे गणना कॉलम के लिए मेरे दूसरे संपादन से पहले जो कोड था, उसमें कोड को "बंद" चिह्नित करने के बाद ठीक से दिनों की गणना नहीं की गई थी। मैं अद्यतन कोड में डाल दिया। कोड का अंतिम भाग समझ में नहीं आता है, क्योंकि यह शुरुआत के समान तर्क है, लेकिन यह काम करता है इसलिए मैं कोई मौका नहीं लेना चाहता था! :)

शांति।

+0

यह अद्यतन कैसे होगा ' दिन ओवरड्यू 'अगर आइटम के लिए संशोधित नहीं किया गया था, तो एक सप्ताह का कहना है? क्या मैं कुछ भूल रहा हूँ? – Ryan

+0

मेरा बुरा, मैंने वर्कफ़्लो को 2 घंटों का इंतजार करने के बाद एक डमी कॉलम को संशोधित करने के लिए सेट किया, इस प्रकार खुद को फिर से चालू कर दिया। –

+0

यह पुराना है, लेकिन क्या आप कृपया मुझे इस भाग के लिए एक कदम से कदम दे सकते हैं: "मैंने क्रियाओं को वर्कफ़्लो चर में संशोधित दिनांक को संग्रहीत करने के लिए सेट किया है, फिर उस चरम पर मान को उस चर के रूप में बदलें। संशोधित कॉलम एक दिनांक/समय है और मेरा आज का कॉलम सिर्फ एक तारीख है, यह बस ठीक है। फिर मैंने वर्कफ़्लो को 2 घंटे तक रोक दिया है। आप इसे जो भी समय चाहते हैं उसे सेट कर सकते हैं, यह बस बदलेगा आपके आज के कॉलम को अद्यतन करने के लिए नवीनतम संभव समय, यानी मेरे मामले में 2AM। " – tehman

4

क्रिस्टोफ़ के (PathToSharePoint) के अलावा के लेख में यह भी आज चाल को शामिल किया गया और क्यों यह काम नहीं करता है

The Truth about using Today in calculated columns

वहाँ fudges के एक नंबर, शायद सबसे अच्छा एक Dessie के कंसोल है एप्लिकेशन (एमएनएम से ऊपर उल्लेख किया है)

Dynamically updating a SharePoint calculated column containing a Today reference

इसका अच्छा लेकिन इसकी सही नहीं, उदाहरण के लिए आप अलग अलग समय क्षेत्रों के बारे में चिंता करने की हो सकती है।

इस मार्ग से नीचे जाने से पहले आपको खुद से पूछना चाहिए कि क्या आपको वास्तव में ऐसा करने की ज़रूरत है। उदाहरण के लिए: -

  • क्या आप अतिदेय आइटम या पिछले एक्स दिनों में बनाए गए आइटम दिखाने के लिए एक दृश्य चाहते हैं एक countdown (days overdue/days left to complete a task) तो आप एसपीडी और एक XLST डेटा दृश्य वेब भाग

  • का उपयोग कर सकते हैं

    एक तारीख स्तंभ आज बुलाया बनाएँ: चुनाव आयोग तो आप एक बार देखा गया फिल्टर 2

-1

यहाँ में [आज] का उपयोग कर सकते एक समाधान नहीं है। इस गणना का उपयोग अपने गणना सूत्र में करें (इस तथ्य को अनदेखा करें कि सूत्र गलत मान देता है)। फॉर्मूला के साथ किए जाने के बाद, अपनी सूची से आज का कॉलम हटाएं।

किसी कारण से यह इस तरह से काम करता है! अब शेयरपॉइंट आज आपके फॉर्मूला में आज की तारीख के रूप में व्यवहार करता है।

नोट: यदि आप तय करते हैं कि आप सूत्र को बदलना चाहते हैं, तो आपको आज का कॉलम फिर से बनाना होगा। अन्यथा, यह आज वैध कॉलम के रूप में पहचाना नहीं जाएगा।

-1

मैंने @ फरज़ाद के दृष्टिकोण की कोशिश की और ऐसा लगता है कि यह पूरी तरह से काम कर रहा है। मैं, दिन पर एक कस्टम गिनती बीता तो एक गणना स्तंभ जो कि पहले मैं बनाया गया दिनांक और संशोधित तिथि कॉलम है, जो केवल दिखाने गया था जब भी कोई उपयोगकर्ता पोस्ट को अद्यतन के बीच एक अंतर उपयोग कर रहा था जोड़ा करना चाहता था ज्यादा मेरी निराश करने के लिए।

अब मेरे पास एक सूत्र है जो मैं चाहता हूं और आज कॉलम का उपयोग करता हूं, और यहां यह किसी भी व्यक्ति के लिए है जो इसका उपयोग करना चाहता है। मेरे पास एक स्टेटस कॉलम भी है जिसके आधार पर ऑन होल्ड का आधार उपयोग किया जाता है, और शेष सूत्र के दिनांक अंतर पर आधारित है - आज बनाया गया

=IF(Status="On Hold","On Hold",IF(AND(Today=Created,(DATEDIF(Created,Today,"D")=0)),"New",IF(AND(Today<>Created,(DATEDIF(Created,Today,"D")=0)),"New (updated)",IF(DATEDIF(Created,Today,"d")>3,"Need Update Immediately",IF(DATEDIF(Created,Today,"d")=1,"One day old",IF(DATEDIF(Created,Today,"d")=2,"Two days old","")))))) 

असल में इसकी सिर्फ नेस्ट यदि स्थिति जो मुझे जिनमें से मैं अपने को देखने के लिए एक समूह जोड़ सकते हैं और यदि आवश्यक हो तो डेटा को फ़िल्टर कर सकते आधार पर लेबल पाने का एक समूह। उम्मीद है कि यह किसी को जवाब देने में मदद करता है!

1

यदि आप आज का कॉलम बनाते हैं तो इसे अपडेट करने की आवश्यकता है। आप इसे टाइमर जॉब या उपयोगकर्ता द्वारा हिट किए गए पृष्ठ पर एक jquery स्क्रिप्ट रखकर कर सकते हैं। स्क्रिप्ट SPServices.SPUpdateMultipleListItems को अद्यतन करने के लिए कॉल कर सकता है। एक सीएएमएल खंड पास करें ताकि आप केवल उन सूची आइटमों को अपडेट कर सकें जहां आज मूल्य को अद्यतन करने की आवश्यकता है, उदा। दिन में एक बार।

+0

मैं इसे प्राप्त करने के लिए बैच प्रोग्राम बनाने का सुझाव दूंगा, इसे दैनिक निर्धारित करने दें और कार्यक्रम केवल उन तारीखों को अपडेट करेगा जो आज की तारीख के बराबर नहीं है। लेकिन मैं आपके द्वारा उल्लेख किए गए स्क्रिप्ट नमूना को देखना चाहता हूं। अग्रिम में धन्यवाद। – mutanic

0

मैंने निम्नलिखित का उपयोग किया है और इसमें कोई समस्या नहीं है।

फ़ील्ड का नाम: अतिदेय

फील्ड प्रकार: परिकलित

डेटा प्रकार लौटाया गया: हां/नहीं

सूत्र: =AND([Due Date]<NOW(),Status<>"Completed",[Due Date]<>"")

+0

यह ठीक काम करता है, धन्यवाद। – Renan

+0

काम नहीं करता है - रिकॉर्ड अपडेट होने तक अद्यतन नहीं होगा। कल फिर से जांचें और आप देखेंगे। – Ryan

संबंधित मुद्दे