लोटस नोट्स Richtext क्षेत्र दस्तावेज़ सहेजा जा रहा बिना Attachmentment या आकार की जाँच
कई धागे नोट्स दस्तावेज़ में पीढ़ी बड़ी फ़ाइलों के अनुलग्नक को रोकने के विषय कवर, और एक बड़ी बाधा हो तो कैसे पहली बचत के बिना दस्तावेज़ करने के लिए, पहली फ़ाइल संलग्न के बिना अकेले जाने लगता है. सभी कारणों क्यों यह एक चुनौती है कवर के बिना, मैंने सोचा यह मेरे लिए मददगार विस्तार करने के लिए हल हो सकता है कि मैं के साथ इस मंच में कई पदों को पढ़ने और सब कुछ एक साथ piecing के बाद आया है.
डिजाइन लक्ष्यों:
1 - किसी भी विशिष्ट दस्तावेज़ सीमा स्वीकार्य संलग्नक के आकार (इस मामले, फ़ाइल के द्वारा फ़ाइल नहीं कुल आकार)
2 - चूंकि यह एक अनंत काल लेने के लिए एक फ़ाइल है कि अंततः अस्वीकृत हो (अब अनंत काल, अधिक से अधिक liklihood इसे मना कर दिया जाएगा) संलग्न कर सकते हैं, हम आदर्श के लिए एक फ़ाइल के आकार की जांच चाहते हैं इससे पहले कि यह किसी दस्तावेज़ में संलग्न है . फाइल सिस्टम स्तर पर एक फ़ाइल के filesize की जांच करने की आवश्यकता में यह अनुवाद.
3 - रक्षित उपयोगकर्ता मित्रता जो कुछ भी है कि पहले से ही लगाव प्रक्रिया में मौजूद है (मैं "क्या उपयोगकर्ता मित्रता जानते हैं?"). संक्षेप में, जब हम फ़ाइलों को संलग्न करने के लिए, हम पिछले तक पहुँचा निर्देशिका के लिए खुला खुली फ़ाइल संवाद जारी रखने के लिए, और नहीं करना चाहिए हमेशा वापस नोट्स डाटा निर्देशिका.
चरण:
1 - "संलग्नक" कहा जाता subform बनाएँ
2 - ग्लोबल घोषणाओं में निम्नलिखित कोड डाल:
मंद NotesUIWorkspace के रूप में किया गया था
NotesSession के रूप में मंद सत्र
NotesDatabase के रूप में मंद db
NotesUIDocument के रूप में मंद uidoc
NotesDocument के रूप में मंद डॉक्टर
पूर्णांक 'के रूप में मंद GlobalSaveFlag चेक कि क्या दस्तावेज़ वास्तव में बाद में सहेजी गई थी करने के लिए इस्तेमाल किया जाएगा
फंक्शन NEMGetFile लिब "NNOTESWS" उर्फ "NEMGetFile" एलान _
(शून्य पूर्णांक, ByVal फ़ाइल नाम के रूप में स्ट्रिंग के रूप में, ByVal फिल्टर स्ट्रिंग, स्ट्रिंग के रूप में ByVal शीर्षक के रूप में) के रूप में पूर्णांक
3 - में इस समारोह subform वैश्विक रखो:
स्ट्रिंग के रूप में समारोह LocalBrowse (स्ट्रिंग के रूप में स्ट्रिंग डिफ़ॉल्ट रूप से, के रूप में शीर्षक, स्ट्रिंग के रूप में फिल्टर)
स्ट्रिंग * 1024 के रूप में मंद फ़ाइलनाम
filename = डिफ़ॉल्ट
फिल्टर = "" तो फिर फिल्टर = "सभी फ़ाइलें यदि |*.*|"
स्थिति% = NEMGetFile (0, फ़ाइल नाम, फिल्टर, शीर्षक)
प्रकरण स्थिति% का चयन करें
प्रकरण 0: LocalBrowse = "" 'रद्द
केस 1: LocalBrowse = छाँटो $ (फ़ाइलनाम)
बाकी प्रकरण: 1000 त्रुटि "त्रुटि एवं होम्योपैथी" और हेक्स $ (स्थिति%) "LocalBrowse में" &
का चयन करें समाप्ति
End Function
4 - PostOpen घटना:
'कई वैश्विक चर इनिशियलाइज़ करने की आवश्यकता है
सेट था = नई NotesUIWorkspace
सेट सत्र = नई NotesSession
Db = Session.currentdatabase सेट
Uidoc स्रोत = सेट
सेट डॉक्टर = uidoc.document
5 - PostRecalc (@ फ़ंक्शंस के बजाय स्क्रिप्ट)
("वापसी @ ("");" AttachFileName = ") @ अगर;
कमान @ ([EditGotoField], "संलग्नक");
कमान @ ([] EditInsertFileAttachment; AttachFileName, "0");
जमीनी AttachFileName: "=";
6 - QuerySave:
NotesDocument 'वैकल्पिक रूप में मंद DBProfile - यदि आप अपने आकार सीमा को कॉन्फ़िगर करने में सक्षम होना चाहते हैं
लांग के रूप में मंद SizeLimit
GlobalSaveFlag = 'तो जारी रखें कि अगर कुछ और जारी रखें को संशोधित, यह पता चला है.
DBProfile सेट = db.GetProfileDocument DBSettings ("") 'यह मेरे सामान्य DB प्रोफ़ाइल है, लेकिन तुम यहाँ का उपयोग कर सकते हैं जो आप चाहते हैं
'या तो इस प्रोफाइल दस्तावेज़ किसी तरह का उपयोग करने के लिए सीमा दुकान, या हार्ड कोड (बाइट्स में) यहाँ सीमा
SizeLimit = DBProfile.AttachSizeLimit (0)
'SizeLimit = '1 1048576 MB
'चलो मौजूदा संलग्नक के कुल आकार को जोड़ने के लिए देखने के लिए अगर यह हमारी सीमा से अधिक
यह स्क्रिप्ट केवल आवश्यक हो यदि कोई उपयोगकर्ता sneeky था और एक पारंपरिक "संलग्न" इस्तेमाल किया जाना चाहिए
फ़ाइल मेनू से 'कमांड के बजाय एक फ़ाइल का चयन करने के लिए बटन
यदि doc.AttachmentSizeTotal (0)> फिर SizeLimit
MsgBox "तुम संलग्नक पर 1 MB की सीमा को पार कर लिया है. "और (10) Chr और Chr (10) और _
"कृपया संलग्नक हटाने या आपकी फ़ाइल सेक (ओं)", 16, "अनुलग्नक त्रुटि"
= झूठा जारी रखें
बाहर निकलें उप
अन्य
= सच जारी रखें
यदि समाप्ति
7 - QueryClose:
रीसेट AttachFileName क्षेत्र अगर हम छोड़ दिया है यह भरा है और दस्तावेज़ सहेजा
'शायद बेमानी है, लेकिन सिर्फ मामले में
यदि GlobalSaveFlag = सच और (0) doc.AttachFileName <फिर> ""
doc.AttachFileName = ""
कॉल doc.Save (ट्रू, झूठा)
यदि समाप्ति
8 - एक लेबल निम्नलिखित lotuscript के साथ "फ़ाइल अनुलग्न" बटन बनाएँ:
उप क्लिक करें (बटन के रूप में स्रोत)
स्ट्रिंग के रूप में मंद NewFilename
स्ट्रिंग के रूप में मंद currentpath
NotesDocument के रूप में मंद DBProfile
लांग के रूप में मंद verLen
लांग के रूप में मंद SizeLimit
DBProfile सेट = db.GetProfileDocument DBSettings ("") 'यह मेरे सामान्य DB प्रोफ़ाइल है, लेकिन तुम यहाँ का उपयोग कर सकते हैं जो आप चाहते हैं
'या तो किसी भी तरह इस प्रोफाइल दस्तावेज़ के लिए सीमा की दुकान, या हार्ड कोड (बाइट्स में) यहाँ सीमा बनाने
SizeLimit = DBProfile.AttachSizeLimit (0)
'SizeLimit = '1 1048576 MB
NewFilename = LocalBrowse ("फ़ाइल अनुलग्न", "" "")
doc.AttachFileName = NewFileName
currentpath = Strleftback (NewFilename, "\")
'यह रीसेट डिफ़ॉल्ट बस खोजा निर्देशिका ब्राउज़
कॉल Session.SetEnvironmentVar ("FileDlgDirectory", currentpath)
verLen और = Filelen (doc.AttachFileName (0)) 'FileLen समारोह में यह सब करने के लिए असली चाल है
'चलो मौजूदा संलग्नक के कुल आकार और नई फ़ाइल को देखने के चयनित जोड़ने अगर यह हमारी सीमा से अधिक
यदि तब (verLen और + (0) doc.AttachmentSizeTotal) SizeLimit>
MsgBox "इस फ़ाइल अनुलग्नकों पर 1 MB की सीमा पार हो जाएगी. "और (10) Chr और Chr (10) और _
"कृपया संलग्नक हटाने या आपकी फ़ाइल सेक (ओं)", 16, "अनुलग्नक त्रुटि"
doc.AttachFileName = ""
अन्य
doc.AttachmentSizeTotal = doc.AttachmentSizeTotal (0) + verLen और
यदि समाप्ति
कॉल uidoc.Refresh 'postrecalc घटना है जो अनुलग्नक प्रक्रिया को पूरा करेगा triggers
अंत में उप
9 - एक संपादन योग्य पाठ क्षेत्र "AttachFileName" कहा जाता बनाएँ. कोई भी सूत्र दर्ज करें, और दृश्य से क्षेत्र छुपाने के मत.
10 - एक छिपा, गणना संख्या निम्नलिखित फार्मूले के साथ "AttachmentSizeTotal" नामक फ़ील्ड बनाएँ:
रेम "वास्तव में पुनर्गणना इस क्षेत्र मत अगर हम \ एक अनुलग्नक की प्रक्रिया के बीच में कर रहे हैं";
tmp: = @ यदि (AttachFileName = ""; योग @ (@) AttachmentLengths; AttachmentSizeTotal);
@ अगर (@ ISERROR (tmp); 0; tmp)
11 - अब वास्तविक रिच टेक्स्ट फ़ील्ड कि संलग्नक की दुकान होगी बनाएँ. "संलग्न ... फ़ाइल" दिनचर्या है कि इस संपादन योग्य "संलग्नक", और अचयनित क्षेत्र "दिखाने के लिए फ़ील्ड सीमांकक (यह आप उपयोगकर्ताओं के लिए" देखो "एक गणना क्षेत्र की तरह बनाने के लिए और उन्हें सामान्य करने से रोकने में मदद के लिए अनुमति देगा" चेकबॉक्स को बुलाओ हमारे लक्ष्यों को पलट देना होगा.
तुम सब करने की ज़रूरत है. हुह सरल?
. मान लें आप इसे किया है सब सही ढंग से (और है कि मैं इसे सही ढंग से वर्णित है), उपयोगकर्ता हमारी बटन का उपयोग अनुलग्नक के लिए फ़ाइल का चयन करने में सक्षम हो, और चाहिए जारी रखने के लिए इसे क्लिक करें जब तक वे एक फ़ाइल है कि डाल देंगे चुना है उन्हें सीमा पर. उस बिंदु पर, अनुलग्नक आपरेशन बंद करो और वे एक चेतावनी संदेश दिखाई देगा. तो, अगली बार, अपने उपयोगकर्ताओं के लिए एक 100 एमबी फ़ाइल अनुलग्न करने की कोशिश, वे दोपहर के भोजन के बाद पता लगाने के लिए वे एक बुरा काम किया जब तक इंतजार नहीं करना होगा. ... संलग्न "" फ़ाइल - यदि वे किसी भी तरह है कि सामान्य का उपयोग सीमा से अधिक फ़ाइलें संलग्न प्रबंधन दृष्टिकोण, querysave उस स्थिति को पकड़ना होगा. तो संक्षिप्त करने के लिए, इस दृष्टिकोण में तीन मुख्य "सफलताओं" निम्नानुसार हैं:
1 - NEMGetFile एपीआई समारोह का उपयोग करने के लिए एक सामान्य फ़ाइल खोलें संवाद कॉल
2 - notes.ini में FileDlgDirectory वातावरण चर के लिए सबसे हाल ही में निर्देशिका के लिए एक मूल्य लेखन
3 - FileLen समारोह का उपयोग उपयोगकर्ता के फाइल सिस्टम में एक फ़ाइल के आकार की जाँच करने के लिए, इनपुट के रूप में filepath दिया
डिजाइन लक्ष्यों:
1 - किसी भी विशिष्ट दस्तावेज़ सीमा स्वीकार्य संलग्नक के आकार (इस मामले, फ़ाइल के द्वारा फ़ाइल नहीं कुल आकार)
2 - चूंकि यह एक अनंत काल लेने के लिए एक फ़ाइल है कि अंततः अस्वीकृत हो (अब अनंत काल, अधिक से अधिक liklihood इसे मना कर दिया जाएगा) संलग्न कर सकते हैं, हम आदर्श के लिए एक फ़ाइल के आकार की जांच चाहते हैं इससे पहले कि यह किसी दस्तावेज़ में संलग्न है . फाइल सिस्टम स्तर पर एक फ़ाइल के filesize की जांच करने की आवश्यकता में यह अनुवाद.
3 - रक्षित उपयोगकर्ता मित्रता जो कुछ भी है कि पहले से ही लगाव प्रक्रिया में मौजूद है (मैं "क्या उपयोगकर्ता मित्रता जानते हैं?"). संक्षेप में, जब हम फ़ाइलों को संलग्न करने के लिए, हम पिछले तक पहुँचा निर्देशिका के लिए खुला खुली फ़ाइल संवाद जारी रखने के लिए, और नहीं करना चाहिए हमेशा वापस नोट्स डाटा निर्देशिका.
चरण:
1 - "संलग्नक" कहा जाता subform बनाएँ
2 - ग्लोबल घोषणाओं में निम्नलिखित कोड डाल:
मंद NotesUIWorkspace के रूप में किया गया था
NotesSession के रूप में मंद सत्र
NotesDatabase के रूप में मंद db
NotesUIDocument के रूप में मंद uidoc
NotesDocument के रूप में मंद डॉक्टर
पूर्णांक 'के रूप में मंद GlobalSaveFlag चेक कि क्या दस्तावेज़ वास्तव में बाद में सहेजी गई थी करने के लिए इस्तेमाल किया जाएगा
फंक्शन NEMGetFile लिब "NNOTESWS" उर्फ "NEMGetFile" एलान _
(शून्य पूर्णांक, ByVal फ़ाइल नाम के रूप में स्ट्रिंग के रूप में, ByVal फिल्टर स्ट्रिंग, स्ट्रिंग के रूप में ByVal शीर्षक के रूप में) के रूप में पूर्णांक
3 - में इस समारोह subform वैश्विक रखो:
स्ट्रिंग के रूप में समारोह LocalBrowse (स्ट्रिंग के रूप में स्ट्रिंग डिफ़ॉल्ट रूप से, के रूप में शीर्षक, स्ट्रिंग के रूप में फिल्टर)
स्ट्रिंग * 1024 के रूप में मंद फ़ाइलनाम
filename = डिफ़ॉल्ट
फिल्टर = "" तो फिर फिल्टर = "सभी फ़ाइलें यदि |*.*|"
स्थिति% = NEMGetFile (0, फ़ाइल नाम, फिल्टर, शीर्षक)
प्रकरण स्थिति% का चयन करें
प्रकरण 0: LocalBrowse = "" 'रद्द
केस 1: LocalBrowse = छाँटो $ (फ़ाइलनाम)
बाकी प्रकरण: 1000 त्रुटि "त्रुटि एवं होम्योपैथी" और हेक्स $ (स्थिति%) "LocalBrowse में" &
का चयन करें समाप्ति
End Function
4 - PostOpen घटना:
'कई वैश्विक चर इनिशियलाइज़ करने की आवश्यकता है
सेट था = नई NotesUIWorkspace
सेट सत्र = नई NotesSession
Db = Session.currentdatabase सेट
Uidoc स्रोत = सेट
सेट डॉक्टर = uidoc.document
5 - PostRecalc (@ फ़ंक्शंस के बजाय स्क्रिप्ट)
("वापसी @ ("");" AttachFileName = ") @ अगर;
कमान @ ([EditGotoField], "संलग्नक");
कमान @ ([] EditInsertFileAttachment; AttachFileName, "0");
जमीनी AttachFileName: "=";
6 - QuerySave:
NotesDocument 'वैकल्पिक रूप में मंद DBProfile - यदि आप अपने आकार सीमा को कॉन्फ़िगर करने में सक्षम होना चाहते हैं
लांग के रूप में मंद SizeLimit
GlobalSaveFlag = 'तो जारी रखें कि अगर कुछ और जारी रखें को संशोधित, यह पता चला है.
DBProfile सेट = db.GetProfileDocument DBSettings ("") 'यह मेरे सामान्य DB प्रोफ़ाइल है, लेकिन तुम यहाँ का उपयोग कर सकते हैं जो आप चाहते हैं
'या तो इस प्रोफाइल दस्तावेज़ किसी तरह का उपयोग करने के लिए सीमा दुकान, या हार्ड कोड (बाइट्स में) यहाँ सीमा
SizeLimit = DBProfile.AttachSizeLimit (0)
'SizeLimit = '1 1048576 MB
'चलो मौजूदा संलग्नक के कुल आकार को जोड़ने के लिए देखने के लिए अगर यह हमारी सीमा से अधिक
यह स्क्रिप्ट केवल आवश्यक हो यदि कोई उपयोगकर्ता sneeky था और एक पारंपरिक "संलग्न" इस्तेमाल किया जाना चाहिए
फ़ाइल मेनू से 'कमांड के बजाय एक फ़ाइल का चयन करने के लिए बटन
यदि doc.AttachmentSizeTotal (0)> फिर SizeLimit
MsgBox "तुम संलग्नक पर 1 MB की सीमा को पार कर लिया है. "और (10) Chr और Chr (10) और _
"कृपया संलग्नक हटाने या आपकी फ़ाइल सेक (ओं)", 16, "अनुलग्नक त्रुटि"
= झूठा जारी रखें
बाहर निकलें उप
अन्य
= सच जारी रखें
यदि समाप्ति
7 - QueryClose:
रीसेट AttachFileName क्षेत्र अगर हम छोड़ दिया है यह भरा है और दस्तावेज़ सहेजा
'शायद बेमानी है, लेकिन सिर्फ मामले में
यदि GlobalSaveFlag = सच और (0) doc.AttachFileName <फिर> ""
doc.AttachFileName = ""
कॉल doc.Save (ट्रू, झूठा)
यदि समाप्ति
8 - एक लेबल निम्नलिखित lotuscript के साथ "फ़ाइल अनुलग्न" बटन बनाएँ:
उप क्लिक करें (बटन के रूप में स्रोत)
स्ट्रिंग के रूप में मंद NewFilename
स्ट्रिंग के रूप में मंद currentpath
NotesDocument के रूप में मंद DBProfile
लांग के रूप में मंद verLen
लांग के रूप में मंद SizeLimit
DBProfile सेट = db.GetProfileDocument DBSettings ("") 'यह मेरे सामान्य DB प्रोफ़ाइल है, लेकिन तुम यहाँ का उपयोग कर सकते हैं जो आप चाहते हैं
'या तो किसी भी तरह इस प्रोफाइल दस्तावेज़ के लिए सीमा की दुकान, या हार्ड कोड (बाइट्स में) यहाँ सीमा बनाने
SizeLimit = DBProfile.AttachSizeLimit (0)
'SizeLimit = '1 1048576 MB
NewFilename = LocalBrowse ("फ़ाइल अनुलग्न", "" "")
doc.AttachFileName = NewFileName
currentpath = Strleftback (NewFilename, "\")
'यह रीसेट डिफ़ॉल्ट बस खोजा निर्देशिका ब्राउज़
कॉल Session.SetEnvironmentVar ("FileDlgDirectory", currentpath)
verLen और = Filelen (doc.AttachFileName (0)) 'FileLen समारोह में यह सब करने के लिए असली चाल है
'चलो मौजूदा संलग्नक के कुल आकार और नई फ़ाइल को देखने के चयनित जोड़ने अगर यह हमारी सीमा से अधिक
यदि तब (verLen और + (0) doc.AttachmentSizeTotal) SizeLimit>
MsgBox "इस फ़ाइल अनुलग्नकों पर 1 MB की सीमा पार हो जाएगी. "और (10) Chr और Chr (10) और _
"कृपया संलग्नक हटाने या आपकी फ़ाइल सेक (ओं)", 16, "अनुलग्नक त्रुटि"
doc.AttachFileName = ""
अन्य
doc.AttachmentSizeTotal = doc.AttachmentSizeTotal (0) + verLen और
यदि समाप्ति
कॉल uidoc.Refresh 'postrecalc घटना है जो अनुलग्नक प्रक्रिया को पूरा करेगा triggers
अंत में उप
9 - एक संपादन योग्य पाठ क्षेत्र "AttachFileName" कहा जाता बनाएँ. कोई भी सूत्र दर्ज करें, और दृश्य से क्षेत्र छुपाने के मत.
10 - एक छिपा, गणना संख्या निम्नलिखित फार्मूले के साथ "AttachmentSizeTotal" नामक फ़ील्ड बनाएँ:
रेम "वास्तव में पुनर्गणना इस क्षेत्र मत अगर हम \ एक अनुलग्नक की प्रक्रिया के बीच में कर रहे हैं";
tmp: = @ यदि (AttachFileName = ""; योग @ (@) AttachmentLengths; AttachmentSizeTotal);
@ अगर (@ ISERROR (tmp); 0; tmp)
11 - अब वास्तविक रिच टेक्स्ट फ़ील्ड कि संलग्नक की दुकान होगी बनाएँ. "संलग्न ... फ़ाइल" दिनचर्या है कि इस संपादन योग्य "संलग्नक", और अचयनित क्षेत्र "दिखाने के लिए फ़ील्ड सीमांकक (यह आप उपयोगकर्ताओं के लिए" देखो "एक गणना क्षेत्र की तरह बनाने के लिए और उन्हें सामान्य करने से रोकने में मदद के लिए अनुमति देगा" चेकबॉक्स को बुलाओ हमारे लक्ष्यों को पलट देना होगा.
तुम सब करने की ज़रूरत है. हुह सरल?
. मान लें आप इसे किया है सब सही ढंग से (और है कि मैं इसे सही ढंग से वर्णित है), उपयोगकर्ता हमारी बटन का उपयोग अनुलग्नक के लिए फ़ाइल का चयन करने में सक्षम हो, और चाहिए जारी रखने के लिए इसे क्लिक करें जब तक वे एक फ़ाइल है कि डाल देंगे चुना है उन्हें सीमा पर. उस बिंदु पर, अनुलग्नक आपरेशन बंद करो और वे एक चेतावनी संदेश दिखाई देगा. तो, अगली बार, अपने उपयोगकर्ताओं के लिए एक 100 एमबी फ़ाइल अनुलग्न करने की कोशिश, वे दोपहर के भोजन के बाद पता लगाने के लिए वे एक बुरा काम किया जब तक इंतजार नहीं करना होगा. ... संलग्न "" फ़ाइल - यदि वे किसी भी तरह है कि सामान्य का उपयोग सीमा से अधिक फ़ाइलें संलग्न प्रबंधन दृष्टिकोण, querysave उस स्थिति को पकड़ना होगा. तो संक्षिप्त करने के लिए, इस दृष्टिकोण में तीन मुख्य "सफलताओं" निम्नानुसार हैं:
1 - NEMGetFile एपीआई समारोह का उपयोग करने के लिए एक सामान्य फ़ाइल खोलें संवाद कॉल
2 - notes.ini में FileDlgDirectory वातावरण चर के लिए सबसे हाल ही में निर्देशिका के लिए एक मूल्य लेखन
3 - FileLen समारोह का उपयोग उपयोगकर्ता के फाइल सिस्टम में एक फ़ाइल के आकार की जाँच करने के लिए, इनपुट के रूप में filepath दिया
2618 दर्शकों द्वारा 7701 बार देखी गयी














अच्छा एक. इस पोस्ट में बहुत मददगार है. धन्यवाद!
कोई फर्क नहीं पड़ता कि मैं क्या करने की कोशिश, मैं कई त्रुटि संदेश "संस्करण एक मूल्य शामिल नहीं करता है" पर रहते हैं. ऐसा लगता है जैसे मैं कुछ variabels कई बार घोषणा की है. मैं क्या कर सकता है. कृपया सलाह. धन्यवाद.
क्षमा करें, पहले से ही हल है. पोस्ट महान है. Thnx