الصفحة الرئيسية > برمجيات لوتس نوتس ، لوتس نوتس الحل ، لوتس نوتس البرنامج التعليمي ، LotusScript ، ملاحظات مصمم > لوتس مجال Richtext ملاحظات Attachmentment فحص أو الحجم دون حفظ وثيقة

لوتس مجال Richtext ملاحظات فحص Attachmentment أو الحجم دون حفظ وثيقة

مواضيع عدة تشمل موضوع منع المرفق من الملفات بشكل مفرط كبير على وثيقة ملاحظات، واحد عقبة كبيرة ويبدو أن كيفية القيام بذلك دون حفظ الوثيقة لأول مرة، ناهيك دون ربط الملف أولا. دون أن تغطي جميع الأسباب التي تجعل هذا هو التحدي، وأعتقد أنه قد يكون من المفيد بالنسبة لي بالتفاصيل الحل الذي خطرت لي بعد قراءة العديد من الوظائف في هذا المنتدى والتفكيك كل شيء معا.

تصميم الأهداف:

1 - تحديد حجم المسموح به من التجهيزات والمعدات (الحجم الإجمالي في هذه الحالة، وليس ملف من الملفات) على أي وثيقة محددة
2 - وبما أنه يمكن أن تتخذ والخلود لإرفاق ملف التي قد تكون في نهاية المطاف غير مسموح بها (كلما طال الخلود، وكلما زاد liklihood سيتم رفض ذلك)، ونحن نريد من الناحية المثالية للتحقق من حجم الملف قبل فإنه يتم إرفاق وثيقة . وهذا يترجم إلى الحاجة للتحقق من حجم الملف من ملف في الملف على مستوى النظام.
3 - المحافظة على كل ما سهولة موجود بالفعل في عملية الحجز (وأنا أعلم: "ما سهولة؟"). باختصار، عندما نعلق الملفات، يجب أن الحوار ملف مفتوح يستمر لفتح إلى الدليل أننا بالرجوع إليه آخر مرة، وليس دائما العودة إلى الدليل بيانات ملاحظات.

الخطوات التالية:
1 - إنشاء نموذج فرعي يسمى "مرفقات"
2 - وضع التعليمات البرمجية التالية في الإعلانات العالمية:

خافت WS كما NotesUIWorkspace
خافت الدورة بصفة NotesSession
خافت ديسيبل كما NotesDatabase
خافت uidoc كما NotesUIDocument
خافت وثيقة NotesDocument
وسوف تستخدم GlobalSaveFlag خافت باسم 'صحيح للتحقق ما إذا تم حفظها في الواقع وثيقة في وقت لاحق

أعلن وظيفة NEMGetFile ليب "NNOTESWS" الاسم المستعار "NEMGetFile" _
(صفر واسم الملف، صحيح الأساسية ByVal كسلسلة، فلتر الأساسية ByVal والعنوان، وسلسلة الأساسية ByVal كسلسلة) وصحيح

3 - ضع هذه الدالة في غلوبالس فرعي:

LocalBrowse وظيفة (العنوان كما الافتراضي، سلسلة وسلسلة، وسلسلة فلتر) كسلسلة
خافت اسم الملف كسلسلة * 1024
= اسم الملف الافتراضي
إذا فلتر = "" فلتر ثم = "كل الملفات | * |."
وضع٪ = NEMGetFile (0، اسم الملف، فلتر، العنوان)

حدد الحالة٪ حالة
حالة 0: LocalBrowse = "" 'إلغاء
حالة 1: LocalBrowse = تريم $ (ملف)
قضية أخرى: خطأ 1000، "خطأ & H" & الهيكس $ (٪ حالة) و "في LocalBrowse"
إنهاء اختر
نهاية وظيفة

4 - PostOpen الحدث:

"تحتاج إلى تهيئة المتغيرات العالمية عدة
ضبط WS = جديد NotesUIWorkspace
الدورة مجموعة = NotesSession جديد
ضبط ديسيبل = Session.currentdatabase
ضبط uidoc = المصدر
ضبط ثيقة = uidoc.document

5 - PostRecalc (@ وظائف بدلا من البرنامج النصي)

@ إذا (AttachFileName = ""؛ @ العودة ("")، "")؛
@ القيادة ([EditGotoField]؛ "مرفقات")؛
@ القيادة ([EditInsertFileAttachment]؛ AttachFileName؛ "0")؛
AttachFileName الحقل: = ""؛

6 - QuerySave:

خافت DBProfile واختياري "NotesDocument - إذا كنت تريد أن تكون قادرة على تكوين حد حجم الخاص
خافت SizeLimit طالما

GlobalSaveFlag = متابعة 'بحيث إذا أي شيء آخر تعديل متابعة، تم الكشف عن ذلك.

مجموعة DBProfile = db.GetProfileDocument ("DBSettings") 'وهذا هو الملف الخاص بي DB عام، ولكن يمكنك استخدام ما تريد هنا

"استخدام هذا الملف وثيقة الى حد ما لتخزين الحد المسموح به، أو رمز من الصعب الحد (بالبايت) هنا
SizeLimit DBProfile.AttachSizeLimit = (0)
'SizeLimit = 1048576 '1 ميغابايت

دعونا تضيف ما يصل الحجم الكلي للمرفقات الحالية لمعرفة ما اذا كان يتجاوز الحد المسموح به لدينا
"وينبغي لهذا السيناريو إلا أن يكون ضروريا إذا كان مستخدم sneeky واستخدمت التقليدية" إرفاق "
'من القائمة ملف بدلا من الأزرار لاختيار ملف
إذا doc.AttachmentSizeTotal (0)> ثم SizeLimit
Msgbox "لقد تجاوزت الحد 1 ميغابايت في المرفقات. "ومركز حقوق الانسان (10) ومركز حقوق الانسان (10) & _
"الرجاء إزالة المرفقات أو ضغط الملف الخاص بك (ق)."، 16 عاما، "خطأ في المرفقات"
مواصلة = خطأ
خروج الفرعية
آخر
مواصلة = صحيح
نهاية إذا

7 - QueryClose:

'إعادة تعيين حقل AttachFileName إذا قمنا تركها تملأ ولقد حفظ المستند
"زائدة عن الحاجة وربما ولكن فقط في حالة
إذا GlobalSaveFlag = True و doc.AttachFileName (0) <> "" ثم
= doc.AttachFileName ""
استدعاء doc.Save (صحيح، خطأ)
نهاية إذا

8 - إنشاء الزر المسمى "إرفاق ملف" مع lotuscript التالية:

اضغط على شبه (المصدر نفسه زر)
خافت NewFilename كسلسلة
خافت currentpath كسلسلة
خافت DBProfile كما NotesDocument
خافت verLen طالما
خافت SizeLimit طالما

مجموعة DBProfile = db.GetProfileDocument ("DBSettings") 'وهذا هو الملف الخاص بي DB عام، ولكن يمكنك استخدام ما تريد هنا

'إما إنشاء هذا الملف وثيقة الى حد ما لتخزين الحد المسموح به، أو رمز من الصعب الحد (بالبايت) هنا
SizeLimit DBProfile.AttachSizeLimit = (0)
'SizeLimit = 1048576 '1 ميغابايت

NewFilename = LocalBrowse ("إرفاق ملف"، ""، "")
doc.AttachFileName = NewFileName
currentpath = Strleftback (NewFilename، "\")

"هذا وسوف إعادة تعيين الافتراضي تصفح الدليل على واحد فقط بحثت
استدعاء Session.SetEnvironmentVar ("FileDlgDirectory"، currentpath)

verLen وFilelen = (doc.AttachFileName (0)) "وظيفة FileLen هو خدعة حقيقية لجميع هذه

دعونا تضيف ما يصل إجمالي حجم المرفقات القائمة واختيار ملف جديد لمعرفة ما اذا كان يتجاوز الحد المسموح به لدينا
إذا كان (verLen و + doc.AttachmentSizeTotal (0))> ثم SizeLimit
Msgbox "سيكون هذا الملف يتجاوز الحد 1 ميغابايت في المرفقات. "ومركز حقوق الانسان (10) ومركز حقوق الانسان (10) & _
"الرجاء إزالة المرفقات أو ضغط الملف الخاص بك (ق)."، 16 عاما، "خطأ في المرفقات"
= doc.AttachFileName ""
آخر
doc.AttachmentSizeTotal doc.AttachmentSizeTotal = (0) + verLen &
نهاية إذا

استدعاء uidoc.Refresh 'بتشغيل الحدث postrecalc التي ستكمل عملية التعلق

نهاية الفرعية

9 - إنشاء حقل نص قابل للتحرير يسمى "AttachFileName". لم تقم بإدخال أي الصيغ، وإخفاء حقل من رأي.

10 - إنشاء خفية، وحقل رقم محسوب يسمى "AttachmentSizeTotal" مع الصيغة التالية:

REM "هل حقا لا حساب هذا المجال إذا أردنا إعادة \ 'في منتصف عملية الحجز"؛
TMP: @ = اذا كان (AttachFileName = ""؛ @ مبلغ (@ AttachmentLengths)؛ AttachmentSizeTotal)؛
@ إذا (@ ISERROR (TMP)؛ 0؛ TMP)

11 - خلق الآن الفعلي حقل نص منسق التي سيتم تخزين المرفقات. استدعاء هذا المجال للتحرير "مرفقات"، وإلغاء تحديد "حقل عرض المحددات" مربع (وهذا سوف يسمح لك لجعله "نظرة" مثل حقل محسوب إلى المستخدمين وتساعد على منعهم من القيام عادي "ملف - إرفاق ..." الروتينية التي وتخريب أهدافنا.

هذا كل ما عليك القيام به. بسيط هوه؟ :-) . على افتراض انك قد فعلت كل شيء بشكل صحيح (والتي كنت وصفها بشكل صحيح)، يجب أن يكون المستخدم قادرا على استخدام زر لدينا لتحديد ملف للمرفق، ومواصلة فوقه حتى لقد اختار الملف الذي سوف يضع لهم أكثر من الحد المسموح به. عند هذه النقطة، فإن عملية الحجز توقف، وأنها سوف ترى رسالة تحذير. لذا، في المرة القادمة، مستخدمين محاولة إرفاق ملف 100MB، فإنها لن تضطر إلى الانتظار حتى بعد الغداء لمعرفة ما فعلوا شيئا سيئا. إذا تمكنوا بطريقة أو بأخرى لإرفاق الملفات التي تتجاوز الحد الطبيعي باستخدام "ملف - إرفاق ..." النهج، سوف querysave قبض على هذا الوضع. لذلك باختصار، والثلاثة الرئيسية "اختراقات" في هذا النهج هي كما يلي:

1 - وظيفة API NEMGetFile استخدام للدعوة الى الحوار فتح ملف عادي
2 - كتابة قيمة لدليل آخر على متغير البيئة FileDlgDirectory في Notes.ini
3 - استخدام الدالة FileLen للتحقق من حجم الملف في نظام الملفات المستخدم، نظرا لأسم دليل كمدخل

مواضيع عدة تشمل موضوع منع المرفق من الملفات بشكل مفرط كبير على وثيقة ملاحظات، واحد عقبة كبيرة ويبدو أن كيفية القيام بذلك دون حفظ الوثيقة لأول مرة، ناهيك دون ربط الملف أولا. دون أن تغطي جميع الأسباب التي تجعل هذا هو التحدي، وأعتقد أنه قد يكون من المفيد بالنسبة لي بالتفاصيل الحل الذي خطرت لي بعد قراءة العديد من الوظائف في هذا المنتدى والتفكيك كل شيء معا.

تصميم الأهداف:

1 - تحديد حجم المسموح به من التجهيزات والمعدات (الحجم الإجمالي في هذه الحالة، وليس ملف من الملفات) على أي وثيقة محددة
2 - وبما أنه يمكن أن تتخذ والخلود لإرفاق ملف التي قد تكون في نهاية المطاف غير مسموح بها (كلما طال الخلود، وكلما زاد liklihood سيتم رفض ذلك)، ونحن نريد من الناحية المثالية للتحقق من حجم الملف قبل فإنه يتم إرفاق وثيقة . وهذا يترجم إلى الحاجة للتحقق من حجم الملف من ملف في الملف على مستوى النظام.
3 - المحافظة على كل ما سهولة موجود بالفعل في عملية الحجز (وأنا أعلم: "ما سهولة؟"). باختصار، عندما نعلق الملفات، يجب أن الحوار ملف مفتوح يستمر لفتح إلى الدليل أننا بالرجوع إليه آخر مرة، وليس دائما العودة إلى الدليل بيانات ملاحظات.

الخطوات التالية:
1 - إنشاء نموذج فرعي يسمى "مرفقات"
2 - وضع التعليمات البرمجية التالية في الإعلانات العالمية:

خافت WS كما NotesUIWorkspace
خافت الدورة بصفة NotesSession
خافت ديسيبل كما NotesDatabase
خافت uidoc كما NotesUIDocument
خافت وثيقة NotesDocument
وسوف تستخدم GlobalSaveFlag خافت باسم 'صحيح للتحقق ما إذا تم حفظها في الواقع وثيقة في وقت لاحق

أعلن وظيفة NEMGetFile ليب "NNOTESWS" الاسم المستعار "NEMGetFile" _
(صفر واسم الملف، صحيح الأساسية ByVal كسلسلة، فلتر الأساسية ByVal والعنوان، وسلسلة الأساسية ByVal كسلسلة) وصحيح

3 - ضع هذه الدالة في غلوبالس فرعي:

LocalBrowse وظيفة (العنوان كما الافتراضي، سلسلة وسلسلة، وسلسلة فلتر) كسلسلة
خافت اسم الملف كسلسلة * 1024
= اسم الملف الافتراضي
إذا فلتر = "" فلتر ثم = "كل الملفات | * |."
وضع٪ = NEMGetFile (0، اسم الملف، فلتر، العنوان)

حدد الحالة٪ حالة
حالة 0: LocalBrowse = "" 'إلغاء
حالة 1: LocalBrowse = تريم $ (ملف)
قضية أخرى: خطأ 1000، "خطأ & H" & الهيكس $ (٪ حالة) و "في LocalBrowse"
إنهاء اختر
نهاية وظيفة

4 - PostOpen الحدث:

"تحتاج إلى تهيئة المتغيرات العالمية عدة
ضبط WS = جديد NotesUIWorkspace
الدورة مجموعة = NotesSession جديد
ضبط ديسيبل = Session.currentdatabase
ضبط uidoc = المصدر
ضبط ثيقة = uidoc.document

5 - PostRecalc (@ وظائف بدلا من البرنامج النصي)

@ إذا (AttachFileName = ""؛ @ العودة ("")، "")؛
@ القيادة ([EditGotoField]؛ "مرفقات")؛
@ القيادة ([EditInsertFileAttachment]؛ AttachFileName؛ "0")؛
AttachFileName الحقل: = ""؛

6 - QuerySave:

خافت DBProfile واختياري "NotesDocument - إذا كنت تريد أن تكون قادرة على تكوين حد حجم الخاص
خافت SizeLimit طالما

GlobalSaveFlag = متابعة 'بحيث إذا أي شيء آخر تعديل متابعة، تم الكشف عن ذلك.

مجموعة DBProfile = db.GetProfileDocument ("DBSettings") 'وهذا هو الملف الخاص بي DB عام، ولكن يمكنك استخدام ما تريد هنا

"استخدام هذا الملف وثيقة الى حد ما لتخزين الحد المسموح به، أو رمز من الصعب الحد (بالبايت) هنا
SizeLimit DBProfile.AttachSizeLimit = (0)
'SizeLimit = 1048576 '1 ميغابايت

دعونا تضيف ما يصل الحجم الكلي للمرفقات الحالية لمعرفة ما اذا كان يتجاوز الحد المسموح به لدينا
"وينبغي لهذا السيناريو إلا أن يكون ضروريا إذا كان مستخدم sneeky واستخدمت التقليدية" إرفاق "
'من القائمة ملف بدلا من الأزرار لاختيار ملف
إذا doc.AttachmentSizeTotal (0)> ثم SizeLimit
Msgbox "لقد تجاوزت الحد 1 ميغابايت في المرفقات. "ومركز حقوق الانسان (10) ومركز حقوق الانسان (10) & _
"الرجاء إزالة المرفقات أو ضغط الملف الخاص بك (ق)."، 16 عاما، "خطأ في المرفقات"
مواصلة = خطأ
خروج الفرعية
آخر
مواصلة = صحيح
نهاية إذا

7 - QueryClose:

'إعادة تعيين حقل AttachFileName إذا قمنا تركها تملأ ولقد حفظ المستند
"زائدة عن الحاجة وربما ولكن فقط في حالة
إذا GlobalSaveFlag = True و doc.AttachFileName (0) <> "" ثم
= doc.AttachFileName ""
استدعاء doc.Save (صحيح، خطأ)
نهاية إذا

8 - إنشاء الزر المسمى "إرفاق ملف" مع lotuscript التالية:

اضغط على شبه (المصدر نفسه زر)
خافت NewFilename كسلسلة
خافت currentpath كسلسلة
خافت DBProfile كما NotesDocument
خافت verLen طالما
خافت SizeLimit طالما

مجموعة DBProfile = db.GetProfileDocument ("DBSettings") 'وهذا هو الملف الخاص بي DB عام، ولكن يمكنك استخدام ما تريد هنا

'إما إنشاء هذا الملف وثيقة الى حد ما لتخزين الحد المسموح به، أو رمز من الصعب الحد (بالبايت) هنا
SizeLimit DBProfile.AttachSizeLimit = (0)
'SizeLimit = 1048576 '1 ميغابايت

NewFilename = LocalBrowse ("إرفاق ملف"، ""، "")
doc.AttachFileName = NewFileName
currentpath = Strleftback (NewFilename، "\")

"هذا وسوف إعادة تعيين الافتراضي تصفح الدليل على واحد فقط بحثت
استدعاء Session.SetEnvironmentVar ("FileDlgDirectory"، currentpath)

verLen وFilelen = (doc.AttachFileName (0)) "وظيفة FileLen هو خدعة حقيقية لجميع هذه

دعونا تضيف ما يصل إجمالي حجم المرفقات القائمة واختيار ملف جديد لمعرفة ما اذا كان يتجاوز الحد المسموح به لدينا
إذا كان (verLen و + doc.AttachmentSizeTotal (0))> ثم SizeLimit
Msgbox "سيكون هذا الملف يتجاوز الحد 1 ميغابايت في المرفقات. "ومركز حقوق الانسان (10) ومركز حقوق الانسان (10) & _
"الرجاء إزالة المرفقات أو ضغط الملف الخاص بك (ق)."، 16 عاما، "خطأ في المرفقات"
= doc.AttachFileName ""
آخر
doc.AttachmentSizeTotal doc.AttachmentSizeTotal = (0) + verLen &
نهاية إذا

استدعاء uidoc.Refresh 'بتشغيل الحدث postrecalc التي ستكمل عملية التعلق

نهاية الفرعية

9 - إنشاء حقل نص قابل للتحرير يسمى "AttachFileName". لم تقم بإدخال أي الصيغ، وإخفاء حقل من رأي.

10 - إنشاء خفية، وحقل رقم محسوب يسمى "AttachmentSizeTotal" مع الصيغة التالية:

REM "هل حقا لا حساب هذا المجال إذا أردنا إعادة \ 'في منتصف عملية الحجز"؛
TMP: @ = اذا كان (AttachFileName = ""؛ @ مبلغ (@ AttachmentLengths)؛ AttachmentSizeTotal)؛
@ إذا (@ ISERROR (TMP)؛ 0؛ TMP)

11 - خلق الآن الفعلي حقل نص منسق التي سيتم تخزين المرفقات. استدعاء هذا المجال للتحرير "مرفقات"، وإلغاء تحديد "حقل عرض المحددات" مربع (وهذا سوف يسمح لك لجعله "نظرة" مثل حقل محسوب إلى المستخدمين وتساعد على منعهم من القيام عادي "ملف - إرفاق ..." الروتينية التي وتخريب أهدافنا.

هذا كل ما عليك القيام به. بسيط هوه؟ :-) . على افتراض انك قد فعلت كل شيء بشكل صحيح (والتي كنت وصفها بشكل صحيح)، يجب أن يكون المستخدم قادرا على استخدام زر لدينا لتحديد ملف للمرفق، ومواصلة فوقه حتى لقد اختار الملف الذي سوف يضع لهم أكثر من الحد المسموح به. عند هذه النقطة، فإن عملية الحجز توقف، وأنها سوف ترى رسالة تحذير. لذا، في المرة القادمة، مستخدمين محاولة إرفاق ملف 100MB، فإنها لن تضطر إلى الانتظار حتى بعد الغداء لمعرفة ما فعلوا شيئا سيئا. إذا تمكنوا بطريقة أو بأخرى لإرفاق الملفات التي تتجاوز الحد الطبيعي باستخدام "ملف - إرفاق ..." النهج، سوف querysave قبض على هذا الوضع. لذلك باختصار، والثلاثة الرئيسية "اختراقات" في هذا النهج هي كما يلي:

1 - وظيفة API NEMGetFile استخدام للدعوة الى الحوار فتح ملف عادي
2 - كتابة قيمة لدليل آخر على متغير البيئة FileDlgDirectory في Notes.ini
3 - استخدام الدالة FileLen للتحقق من حجم الملف في نظام الملفات المستخدم، نظرا لأسم دليل كمدخل

شوهدت 7727 مرة من قبل المشاهدين 2624

  1. إد
    26 أغسطس 2010 في 10:53 | # 1

    جيد واحد. هذا آخر مفيد جدا. شكرا!

  2. جون
    22 نوفمبر 2010 في 05:41 | # 2

    مهما حاولت، وأظل على وجود العديد من "البديل لا يحتوي على قيمة" رسائل الخطأ. يبدو لي أن تعلن بعض الأوقات variabels عدة. ماذا يمكنني أن أفعل. يرجى تقديم المشورة. شكرا.

  3. جون
    22 نوفمبر 2010 في 06:35 | # 3

    آسف، سبق حلها. وآخر شيء عظيم. thnx ج

  1. لا تركبكس بعد.