首頁 > 的Lotus Notes軟件Lotus Notes的解決方案,Lotus Notes的教程,使用 LotusScript ,債券設計的Lotus Notes富文本字段檢查Attachmentment或尺寸不保存文件

檢查的Lotus Notes富文本字段Attachmentment或尺寸不保存文件

多個線程覆蓋,防止過大的文件附件到Notes文檔的問題,一個主要障礙似乎是如何做而沒有事先保存的文件,更何況沒有第一附加文件。 沒有涵蓋所有的原因這是一個挑戰,我認為它可能是詳細的解決方案,我想出了幾個職位,在這個論壇上閱讀和拼湊起來後,對我很有幫助。

設計目標:

1 - 允許附件的大小(在這種情況下,不通過文件的文件的總大小)限制任何具體文件
2 - 因為它可以採取一個永恆的附加文件,最終可能會被禁止(永恆的時間越長,更大的liklihood將被拒絕),我們的理想附加到文檔之前,要檢查文件的大小。 這意味著進入需要檢查文件系統級別的文件大小。
3 - 保留任何用戶友好性,已經在實習過程中存在的(我知道“用戶友好”?)。 總之,我們十分重視文件時,打開文件對話框應繼續打開我們上次訪問的目錄,而不是總是 Notes數據目錄。

步驟:
1 - 創建一個所謂的“附件”子窗體
2 - 把下面的代碼在全局聲明:

暗淡是由於 NotesUIWorkspace
昏暗的會議作為 NotesSession
DIM DB作為 NotesDatabase
DIM uidoc作為 NotesUIDocument
昏暗的DOC由於使用NotesDocument
DIM GlobalSaveFlag為整數“將被用來檢查文件實際上保存稍後

聲明功能NEMGetFile LIB“NNOTESWS”別名“NEMGetFile”_
(零為整,BYVAL文件名作為字符串,字符串,如字符串BYVAL標題#過濾器)作為整數

3 - 在子窗體的全局函數:

功能LocalBrowse作為字符串(字符串,字符串的默認的標題,作為字符串過濾器)
昏暗的文件名字符串* 1024
文件名=默認
如果過濾器=“”然後過濾 =“所有文件|*.*|"
狀態%= NEMGetFile(0,文件名,過濾,標題)

選擇案例狀態%
情況下,0:LocalBrowse =“”取消
案例1:LocalBrowse =修剪$(文件名)
CASE ELSE:錯誤 1000“錯誤&H”&十六進制 $(狀態%)及“LocalBrowse”
最終選擇
端功能

4 - PostOpen事件:

“需要初始化幾個全局變量
設置了新NotesUIWorkspace
設置會話 =新N​​otesSession
設置 DB = Session.currentdatabase
設置 uidoc =源
設置 DOC = uidoc.document

5 - PostRecalc(@函數,而不是腳本)

@如果(AttachFileName =“”; @返回("");“”);
@命令([EditGotoField]“附件”);
@命令([EditInsertFileAttachment]; AttachFileName;“0”);
現場 AttachFileName:=“”;

6 - QuerySave:

由於使用NotesDocument“可選 DIM DBProfile - 如果你想能夠配置的大小限制
作為長期的DIM SizeLimit

GlobalSaveFlag =“所以,如果別的修改,請繼續,這是檢測。

設置 DBProfile = db.GetProfileDocument(“DBSettings”)“這是我的通用數據庫的配置文件,但您可以使用任何你想要的

“要么使用此配置文件的文件以某種方式存儲的限制,或硬編碼的限制(以字節為單位)
SizeLimit = DBProfile.AttachSizeLimit(0)
“SizeLimit = 1048576 1 MB

“讓我們添加現有附件的總大小,看它是否超出了我們的極限
“這個腳本只應是必要的,如果用戶是sneeky和使用傳統的”附加“
“從文件菜單中的命令,而不是選擇一個文件按鈕
如果do​​c.AttachmentSizeTotal(0)> SizeLimit
MSGBOX“您已超出附件1 MB的限制。 “&CHR(10)CHR(10)&_
“請刪除附件或壓縮文件(S)”,16“,附件錯誤”
繼續 = FALSE
退出小組
其他
繼續 = TRUE
結束如果

7 - QueryClose:

“復位 AttachFileName領域,如果我們離開它填補和已保存的文件
“可能是多餘的,但以防萬一
如果GlobalSaveFlag = True和doc.AttachFileName(0)<>“”
doc.AttachFileName =“”
致電 doc.Save(真,假)
結束如果

8 - 創建一個按鈕,標有“附加文件”具有以下lotuscript:

分點擊(As按鈕源)
作為字符串昏暗的NewFilename
作為字符串昏暗的currentpath
由於使用NotesDocument DIM DBProfile
只要DIM verLen
作為長期的DIM SizeLimit

設置 DBProfile = db.GetProfileDocument(“DBSettings”)“這是我的通用數據庫的配置文件,但您可以使用任何你想要的

“無論是創建此配置文件的文件以某種方式存儲的限制,或硬編碼的限制(以字節為單位)
SizeLimit = DBProfile.AttachSizeLimit(0)
“SizeLimit = 1048576 1 MB

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 MB的限制。 “&CHR(10)CHR(10)&_
“請刪除附件或壓縮文件(S)”,16“,附件錯誤”
doc.AttachFileName =“”
其他
doc.AttachmentSizeTotal = doc.AttachmentSizeTotal(0)+ verLen&
結束如果

呼叫uidoc.Refresh“觸發 postrecalc事件將完成附件的過程

END SUB

9 - 創建一個可編輯的文本字段稱為“AttachFileName”。 不要輸入任何公式,並從視圖中隱藏的字段。

10 - 創建一個隱藏的,號碼字段名為“AttachmentSizeTotal”用下面的公式計算:

REM“並沒有真正重新計算這個領域,如果我們 \”附件過程中重新“;
TMP:如果(AttachFileName = @ =“”; @ SUM(@ AttachmentLengths); AttachmentSizeTotal);
@如果(ISERROR(TMP),0; TMP)

11 - 現在創建實際的富文本字段將存儲附件。 呼叫這個可編輯字段“附件”,然後取消選擇“顯示字段分隔符”複選框(這將允許你做它“看起來”像一個計算字段給用戶,並有助於防止他們做正常的“文件 - 連接 ... ...”例程將顛覆我們的目標。

這就是所有你需要做的的。 簡單吧? :-) 假設你做了所有正確,我所描述的是正確的,用戶應當能夠使用我們的按鈕選擇一個文件附件,並繼續單擊它,直到他們選擇了一個文件,該文件將放在他們在限制。 在這一點上,附件操作將停止,他們將看到一個警告消息。 所以,接下來的時間,你的用戶嘗試附加一個 100MB的文件,他們不會等到午飯後發現他們乾了壞事。 如果他們以某種方式管理附加檔案超過限制,使用正常的“文件 - 連接 ... ...”的方式,querysave將趕上這種情況。 所以總括來說,這種方法的三個主要的“突破”如下:

1 - 使用NEMGetFile API函數調用正常的打開文件對話框
2 - 寫在Notes.ini FileDlgDirectory環境變量的值最近目錄
3 - 使用FileLen函數以檢查用戶的文件系統中的文件的大小,作為輸入的文件路徑

多個線程覆蓋,防止過大的文件附件到Notes文檔的問題,一個主要障礙似乎是如何做而沒有事先保存的文件,更何況沒有第一附加文件 沒有涵蓋所有的原因這是一個挑戰,我認為它可能是詳細的解決方案,我想出了幾個職位,在這個論壇上閱讀和拼湊起來後,對我很有幫助。

設計目標:

1 - 允許附件的大小(在這種情況下,不通過文件的文件的總大小)限制任何具體文件
2 - 因為它可以採取一個永恆的附加文件,最終可能會被禁止(永恆的時間越長,更大的liklihood將被拒絕),我們的理想附加到文檔之前,要檢查文件的大小。 這意味著進入需要檢查文件系統級別的文件大小。
3 - 保留任何用戶友好性,已經在實習過程中存在的(我知道“用戶友好”?)。 總之,我們十分重視文件時,打開文件對話框應繼續打開我們上次訪問的目錄,而不是總是 Notes數據目錄。

步驟:
1 - 創建一個所謂的“附件”子窗體
2 - 把下面的代碼在全局聲明:

暗淡是由於 NotesUIWorkspace
昏暗的會議作為 NotesSession
DIM DB作為 NotesDatabase
DIM uidoc作為 NotesUIDocument
昏暗的DOC由於使用NotesDocument
DIM GlobalSaveFlag為整數“將被用來檢查文件實際上保存稍後

聲明功能NEMGetFile LIB“NNOTESWS”別名“NEMGetFile”_
(零為整,BYVAL文件名作為字符串,字符串,如字符串BYVAL標題#過濾器)作為整數

3 - 在子窗體的全局函數:

功能LocalBrowse作為字符串(字符串,字符串的默認的標題,作為字符串過濾器)
昏暗的文件名字符串* 1024
文件名=默認
如果過濾器=“”然後過濾 =“所有文件|*.*|"
狀態%= NEMGetFile(0,文件名,過濾,標題)

選擇案例狀態%
情況下,0:LocalBrowse =“”取消
案例1:LocalBrowse =修剪$(文件名)
CASE ELSE:錯誤 1000“錯誤&H”&十六進制 $(狀態%)及“LocalBrowse”
最終選擇
端功能

4 - PostOpen事件:

“需要初始化幾個全局變量
設置了新NotesUIWorkspace
設置會話 =新N​​otesSession
設置 DB = Session.currentdatabase
設置 uidoc =源
設置 DOC = uidoc.document

5 - PostRecalc(@函數,而不是腳本)

@如果(AttachFileName =“”; @返回("");“”);
@命令([EditGotoField]“附件”);
@命令([EditInsertFileAttachment]; AttachFileName;“0”);
現場 AttachFileName:=“”;

6 - QuerySave:

由於使用NotesDocument“可選 DIM DBProfile - 如果你想能夠配置的大小限制
作為長期的DIM SizeLimit

GlobalSaveFlag =“所以,如果別的修改,請繼續,這是檢測。

設置 DBProfile = db.GetProfileDocument(“DBSettings”)“這是我的通用數據庫的配置文件,但您可以使用任何你想要的

“要么使用此配置文件的文件以某種方式存儲的限制,或硬編碼的限制(以字節為單位)
SizeLimit = DBProfile.AttachSizeLimit(0)
“SizeLimit = 1048576 1 MB

“讓我們添加現有附件的總大小,看它是否超出了我們的極限
“這個腳本只應是必要的,如果用戶是sneeky和使用傳統的”附加“
“從文件菜單中的命令,而不是選擇一個文件按鈕
如果do​​c.AttachmentSizeTotal(0)> SizeLimit
MSGBOX“您已超出附件1 MB的限制。 “&CHR(10)CHR(10)&_
“請刪除附件或壓縮文件(S)”,16“,附件錯誤”
繼續 = FALSE
退出小組
其他
繼續 = TRUE
結束如果

7 - QueryClose:

“復位 AttachFileName領域,如果我們離開它填補和已保存的文件
“可能是多餘的,但以防萬一
如果GlobalSaveFlag = True和doc.AttachFileName(0)<>“”
doc.AttachFileName =“”
致電 doc.Save(真,假)
結束如果

8 - 創建一個按鈕,標有“附加文件”具有以下lotuscript:

分點擊(As按鈕源)
作為字符串昏暗的NewFilename
作為字符串昏暗的currentpath
由於使用NotesDocument DIM DBProfile
只要DIM verLen
作為長期的DIM SizeLimit

設置 DBProfile = db.GetProfileDocument(“DBSettings”)“這是我的通用數據庫的配置文件,但您可以使用任何你想要的

“無論是創建此配置文件的文件以某種方式存儲的限制,或硬編碼的限制(以字節為單位)
SizeLimit = DBProfile.AttachSizeLimit(0)
“SizeLimit = 1048576 1 MB

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 MB的限制。 “&CHR(10)CHR(10)&_
“請刪除附件或壓縮文件(S)”,16“,附件錯誤”
doc.AttachFileName =“”
其他
doc.AttachmentSizeTotal = doc.AttachmentSizeTotal(0)+ verLen&
結束如果

呼叫uidoc.Refresh“觸發 postrecalc事件將完成附件的過程

END SUB

9 - 創建一個可編輯的文本字段稱為“AttachFileName”。 不要輸入任何公式,並從視圖中隱藏的字段。

10 - 創建一個隱藏的,號碼字段名為“AttachmentSizeTotal”用下面的公式計算:

REM“並沒有真正重新計算這個領域,如果我們 \”附件過程中重新“;
TMP:如果(AttachFileName = @ =“”; @ SUM(@ AttachmentLengths); AttachmentSizeTotal);
@如果(ISERROR(TMP),0; TMP)

11 - 現在創建實際的富文本字段將存儲附件。 呼叫這個可編輯字段“附件”,然後取消選擇“顯示字段分隔符”複選框(這將允許你做它“看起來”像一個計算字段給用戶,並有助於防止他們做正常的“文件 - 連接 ... ...”例程將顛覆我們的目標。

這就是所有你需要做的的。 簡單吧? :-) 假設你做了所有正確,我所描述的是正確的,用戶應當能夠使用我們的按鈕選擇一個文件附件,並繼續單擊它,直到他們選擇了一個文件,該文件將放在他們在限制。 在這一點上,附件操作將停止,他們將看到一個警告消息。 所以,接下來的時間,你的用戶嘗試附加一個 100MB的文件,他們不會等到午飯後發現他們乾了壞事。 如果他們以某種方式管理附加檔案超過限制,使用正常的“文件 - 連接 ... ...”的方式,querysave將趕上這種情況。 所以總括來說,這種方法的三個主要的“突破”如下:

1 - 使用NEMGetFile API函數調用正常的打開文件對話框
2 - 寫在Notes.ini FileDlgDirectory環境變量的值最近目錄
3 - 使用FileLen函數以檢查用戶的文件系統中的文件的大小,作為輸入的文件路徑

2607觀眾觀看了7665次

Tags: , 分類: Lotus Notes軟件Lotus Notes的解決方案,Lotus Notes的教程,使用 LotusScript ,說明 設計標籤 Attachmentment 文本
  1. 2010年8月26日10時53分| #1

    好的。 這是一篇非常有幫助。 謝謝!

  2. 喬恩
    2010年11月22日5時41分| #2

    不管是什麼,我嘗試,我一直有幾個“變種不包含一個值”的錯誤消息。 好像我要宣布一些variabels多次。 我能做些什麼。 請告知。 感謝。

  3. 喬恩
    2010年11月22日6時35分| #3

    對不起,已經解決了。 後是偉大的。 Thnx

  1. 還沒有引用通告。