• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Lotus Notes應用中多頁文本的處理

    發布: 2007-7-02 21:50 | 作者: admin | 來源: | 查看: 8次 | 進入軟件測試論壇討論

    領測軟件測試網 日常辦公應用中,大量的文檔處理不可避免要碰到多頁格式文本,而在以文檔為主要處理對象的應用程序里,也會碰到這一問題。Lotus Notes的應用程序中,表單是生成文檔的模板,如果要在文檔中增加表格行,就必須動態改變表單,所以在Lotus Notes中實現格式文檔的多頁顯示仍有其實用意義。 

    Lotus Domino/Notes是Lotus公司推出的群件系統。通過Lotus Notes的支持,Domino能夠為Inte.net/Intranet用戶提供強大的工作流、消息傳遞、協同計算、信息檢索和信息發布等應用。目前,已經有越來越多的公司企業、政府機關使用Lotus Domino/Notes作為協同工作平臺,有效地實現了辦公自動化。 

    多頁文本的顯示問題

    在辦公應用中,大量的文檔處理不可避免要碰到多頁格式文本。例如:合同的正本有相應的幅面尺寸規定,一張合同只能輸入有限的信息量,因此會碰到一個合同里的交易產品種類數量過多,必須用多頁文本顯示。在以文檔為主要處理對象的應用程序里,也會碰到這一問題,但由于文檔在電腦中不受紙面的限制,可以通過對表格增行以得到足夠的空間,這樣即節省了存儲空間,山可不重復存儲單據的頭信息。 

    Lotus Notes的應用程序中,表單是生成文檔的模板,如果要在文檔中增加表格行,就必須動態改變表單。因為Lotus Notes應用程序中的表單是靜態的,故動態增刪表格行不太方便。另外,考慮到網絡普及的今天仍然脫離不了必要的紙面憑證,我們有時仍需打印出大量的文件,所以在Lotus Notes中實現格式文檔的多頁顯示仍有其實用意義。 

    實現文檔的多頁顯示的前提是:在信息量超過一個表單頁面所能顯示的信息的時候,能夠產生下一頁,并將文檔的上一頁的頭信息內容復制到當前頁(以一個合同為例,合同的供方及相關信息、需方及相關信息、簽訂時間、合同號、合同細則都屬于頭信息,對于一次交易而言,每頁合同的這些信息應該相同),同時能增加當前頁的頁碼,并保證一次交易中只有一個惟一標識(通?捎煤贤枺,以確保在瀏覽上下頁時可以打開正確的文檔。

    實現多頁文本的顯示 

    現假設合同表單域名為“Contract”,頁碼域名為“pageNo”,頁數域名為“pages”,合同號域名為“contractNo”。 

    為了保證填寫下一張頁面時,能得到上一張頁面的值,必須在“Contract”表單的屬性里選擇“公式繼承選定文檔的數值”。這里最關鍵的是要繼承合同號、頁碼和頁數信息。為了在新的頁面里得到上述信息的正確值,還應再在上述域的缺省值里加上一些公式。在“contractNo”域里的缺省值為:contractNo?梢栽獠粍拥匕焉弦豁摰暮贤柨截惖叫碌捻撁,以保證是同一筆交易。在“pageNo”域里的缺省值為: 

    @if(@environment("isNext")="True"; 

    @do(@environment("isNext";"");pageNo+1);1)。  


    上面的公式可以辨別當前是第一頁還是繼續填寫的頁,其中“pages”域里的缺省值為pageNo。

    需要注意的是,雖然繼續填寫的新頁的頁數已經增加了,但是并沒有改變前面所填頁面上的頁數值。從符合邏輯的角度來說,前面已填寫頁面的頁數,應該在最后所有頁面填完之后才添加上去,所以在新填寫的頁面未保存時不能將頁數統一為新頁上的頁數。 

    在“繼續填寫下一頁”按鈕按下的時候,執行的操作包括兩個:保存并關閉當前頁面和打開新的頁面。這里采用Lotus Script編寫代碼,詳細代碼如下: 

    Dim workspace As New NotesUIWorkspace 

    Dim uidoc As NotesUIDocument 

    Dim session As NotesSession 

    Set uidoc = workspace.CurrentDocument 

    If uidoc.editmode=True Then 

    Call uidoc.save 

    End If 

    Call session.SetEnvironmentVar("isNext","True")  


    @#設置用于區分是否下一頁的標志 

    Call uidoc.close 

    Call workspace.ComposeDocument("","","Contract")  


    這里在保存的時候還要保證某些信息(如頁數)在該筆交易下的所有頁面保持同步。這就需要在保存完當前頁面后修改其他頁面的相應信息。這些操作的代碼可以在合同表單的“postsave”事件里寫。具體代碼如下: 

    Sub Postsave(Source As Notesuidocument) 

    Dim session As New notessession 

    Dim db As notesdatabase 

    Dim doccol As notesdocumentcollection 

    Dim datetime As notesdatetime 

    Dim doc As notesdocument 

    Set db=session.currentdatabase 

    formsearch$="form=""Contract""&&contractNo="""+source.document.contractN o(0)+"""" 

    Set doccol=db.search(formsearch$,datetime,0) 

    If doccol.count>0 Then 

    For i=1 To doccol.count 

    If i=1 Then 

    Set doc=doccol.getfirstdocument 

    Else 

    Set doc=doccol.getnextdocument(doc) 

    End If 

    If doc.universalid<>source.document.universalid Then 

    doc.pages=source.document.pages(0) 

    @#可以設置其他需要字段的值 

    Call doc.save(True,False) 

    @#使之與所有頁面統一 

    End If 

    Next 

    End If 

    End Sub  


    現在,多頁文檔已經建立好了,還需要對它進行瀏覽。瀏覽的方式可以為“上下翻頁式”或“到指定頁式”,兩者原理是一樣的,這里以瀏覽下一頁為例加以說明。 

    首先,創建一個按鈕“瀏覽下一頁”,并在按鈕的click事件里寫以下Lotus Script代碼: 

    Dim workspace As New NotesUIWorkspace 

    Dim uidoc As NotesUIDocument 

    Dim session As New NotesSession 

    Dim db As NotesDatabase 

    Dim doc As NotesDocument 

    Dim doccol As NotesDocumentCollection 

    Dim datetime As Notesdatetime 

    Set uidoc=workspace.CurrentDocument 

    Set db=session.currentdatabase 

    SearchFormula="Form=""Contract""&&contractNo="""+uidoc.document.contract 

    No(0)+"""&&p ageNo="""+Cstr(uidoc.document.pageNo(0)+1)+"""" @#可以指定任意頁

    If uidoc.editmode=True Then 

    Call uidoc.save 

    End If 

    Call uidoc.close 

    Set doccol= db.search(SearchFormula,datetime,0)

    Set doc=doccol.getfirstDocument 

    Set uidoc=workspace.EditDocument( False , doc)  


    至此,多頁文本的創建與瀏覽已經介紹完了,但是考慮到有刪除部分頁的可能,所以對于刪除指定頁的處理也是必需的。刪除指定頁的基本過程應包括:刪除指定頁的文檔、查找所有該交易的文檔、修改這些文檔的頁數域和修改頁碼域值大于刪除頁頁碼的文檔頁碼域。 

    以下是實現這一過程的Lotus Script函數代理:

    Function deletedocument(doc As notesdocument) 

    Dim session As New notessession 

    Dim db As notesdatabase 

    Dim doccol As notesdocumentcollection 

    Dim datetime As notesdatetime 

    Set db=session.currentdatabase 

    contractno$=doc.contractNo(0) 

    pageno=doc.pageNo(0) 

    If doc.remove(0) Then 

    formsearch="form=""contract""&&contractNo=""

    "+contractno$+"""" 

    Set doccol=db.search(formsearch$,datetime,0) 

    For i=1 To doccol.count 

    If i=1 Then 

    Set doc=doccol.getfirstdocument 

    Else 

    Set doc=doccol.getnextdocument(doc) 

    End If 

    doc.pages=doc.pages(0)-1 

    If doc.pageNo(0)>pageno Then 

    doc.pageNo=doc.pageNo(0)-1 

    End If 

    Call doc.save(True,False) 

    Next 

    End If 

    End Function  


    以上是在Lotus Notes應用中,對多頁文本的一種處理方法,筆者希望讀者在實際應用開發中靈活使用。

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>