gem's profileWaiting…BlogLists Tools Help

Blog


    28/09/2009

    关键字:lotusscript 动态表格 创建 编辑 读写

    keyword:lotusscript dynamin table create edit read write

    以下代码,实现了从现有文档的表格中读取数据,并填写入新建文档的表格中:

    Sub Click(Source As Button)
     Dim NewUIWorkspace As New NotesUIWorkspace
     Dim NewNoteSession As New NotesSession
     Dim CurrentDB As NotesDatabase
     Dim NewDoc As NotesDocument
     Dim AuthorNotesName As NotesName
     Dim TableNotesRichTextItem As NotesRichTextItem
     Dim columnHeaderStyle As NotesRichTextStyle
     Dim i As Integer
     Dim columnStyles(0 To 4) As NotesRichTextParagraphStyle
     Dim headerColor As NotesColorObject
     Dim dataColor As NotesColorObject
     Dim TableNotesRichTextNavigator As NotesRichTextNavigator
     Dim TableNotesRichTextTable As NotesRichTextTable
     Dim dataStyle As NotesRichTextStyle
     
     Dim SectionNotesView As NotesView
     Dim SectionNotesViewNavigator As NotesViewNavigator
     Dim SectionNotesViewEntry As NotesViewEntry
     Dim SectionNotesRichTextItem As NotesRichTextItem
     Dim SectionNotesRichTextNavigator As NotesRichTextNavigator
     Dim SectionNotesRichTextTable As NotesRichTextTable
     Dim SectionNotesDocument As NotesDocument
     
     Dim SectionTableNotesRichTextItem As NotesRichTextItem
     Dim SectionCellNotesRichTextItem As NotesRichTextItem
     Dim SectonTableNotesRichTextRange As NotesRichTextRange
     Dim SectonCellNotesRichTextRange As NotesRichTextRange
     Dim SectonParagraphNotesRichTextRange As NotesRichTextRange
     Dim SectonTableNotesRichTextNavigator As NotesRichTextNavigator
     Dim SectonCellNotesRichTextNavigator As NotesRichTextNavigator
     
     Set CurrentDB = NewNoteSession.CurrentDatabase
     
     
     '新建文档
     Set NewDoc = New NotesDocument(CurrentDB)
     NewDoc.form = "form1"
     
     
     Set AuthorNotesName = NewNoteSession.CreateName(NewNoteSession.UserName)
     Call NewDoc.AppendItemValue ( "DepartmentDairyName",AuthorNotesName.OrgUnit1 )
     
     '画表
     Set TableNotesRichTextItem = NewDoc.CreateRichTextItem("DepartmentDairy")
     
     '设置表头格式
     Set columnHeaderStyle = NewNoteSession.CreateRichTextStyle( )
     columnHeaderStyle.Bold = True
     columnHeaderStyle.FontSize = 20
     columnHeaderStyle.NotesFont = TableNotesRichTextItem.GetNotesFont("Arial", True)
     
     '设置列宽,5列
     For i = 0 To 4
      Set columnStyles(i) = NewNoteSession.CreateRichTextParagraphStyle
      columnStyles(i).LeftMargin = 0
      columnStyles(i).FirstLineLeftMargin = 0
     Next
     columnStyles(0).RightMargin = 8 * RULER_ONE_CENTIMETER
     columnStyles(1).RightMargin = 8 * RULER_ONE_CENTIMETER
     columnStyles(2).RightMargin = 8 * RULER_ONE_CENTIMETER
     columnStyles(3).RightMargin = 3 * RULER_ONE_CENTIMETER
     columnStyles(4).RightMargin = 4 * RULER_ONE_CENTIMETER
     
     '设置表头色彩
     Set headerColor = NewNoteSession.CreateColorObject
     Call headerColor.SetRGB(239,239,239)
     Set dataColor = NewNoteSession.CreateColorObject
     Call dataColor.SetRGB(255,255,255)
     
     '创建空表
     Call TableNotesRichTextItem.AppendTable(1,5,,,columnStyles)
     
     Set TableNotesRichTextNavigator = TableNotesRichTextItem.CreateNavigator()
     TableNotesRichTextNavigator.FindLastElement RTELEM_TYPE_TABLE
     
     Set TableNotesRichTextTable = TableNotesRichTextNavigator.GetElement
     TableNotesRichTextTable.Style = TABLESTYLE_TOP
     TableNotesRichTextTable.SetColor headerColor
     TableNotesRichTextTable.SetAlternateColor dataColor
     
     '画表头
     TableNotesRichTextItem.AppendStyle columnHeaderStyle
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column1"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column2"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column3"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column4"
     TableNotesRichTextItem.EndInsert
     TableNotesRichTextNavigator.FindNextElement RTELEM_TYPE_TABLECELL
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     TableNotesRichTextItem.AppendText "column5"
     TableNotesRichTextItem.EndInsert
     
     '设置单元格式
     Set dataStyle = NewNoteSession.CreateRichTextStyle()
     dataStyle.Bold = False
     dataStyle.FontSize = 10
     TableNotesRichTextNavigator.FindNextElement
     TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator
     Call TableNotesRichTextItem.AppendStyle(dataStyle)
     TableNotesRichTextItem.EndInsert
     
     '遍历最新的科室日结文档,以填充表项
     Set SectionNotesView = CurrentDB.GetView("view0")
     Set SectionNotesViewNavigator = SectionNotesView.CreateViewNav
     Set SectionNotesViewEntry = SectionNotesViewNavigator.GetFirstDocument
     
     While Not SectionNotesViewEntry Is Nothing
      If Not Datevalue(SectionNotesViewEntry.Document.Created) = Today  Goto FinishOverToday  
      
      Set SectionNotesDocument = SectionNotesViewEntry.Document
      Set SectionNotesRichTextItem = SectionNotesDocument.GetFirstItem("SectionDairy")
      Set SectionNotesRichTextNavigator = SectionNotesRichTextItem.CreateNavigator
      SectionNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLE)
      
      Set SectionTableNotesRichTextRange = SectionNotesRichTextItem.CreateRange
      Call SectionTableNotesRichTextRange.SetBegin(SectionNotesRichTextNavigator)
      Call SectionTableNotesRichTextRange.SetEnd(SectionNotesRichTextNavigator)
      Set SectionTableNotesRichTextNavigator = SectionTableNotesRichTextRange.Navigator
      
      Set SectonCellNotesRichTextRange = SectionNotesRichTextItem.CreateRange
      Set SectonParagraphNotesRichTextRange = SectionNotesRichTextItem.CreateRange
      
      Call SectionTableNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      Call SectionTableNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TABLECELL)
      
      '从第2行开始复制表项
      While  SectionTableNotesRichTextNavigator.FindNextElement (RTELEM_TYPE_TABLECELL)   
       Call TableNotesRichTextTable.AddRow(1)
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert
       SectionTableNotesRichTextNavigator.FindNextElement
       
       
       TableNotesRichTextNavigator.FindNextElement
       Call SectonCellNotesRichTextRange.SetBegin(SectionTableNotesRichTextNavigator)
       Call SectonCellNotesRichTextRange.SetEnd(SectionTableNotesRichTextNavigator)
       Set SectionCellNotesRichTextNavigator = SectonCellNotesRichTextRange.Navigator   
       TableNotesRichTextItem.BeginInsert TableNotesRichTextNavigator   
       Call SectionCellNotesRichTextNavigator.FindFirstElement(RTELEM_TYPE_TEXTPARAGRAPH)
       Do
        Call SectonParagraphNotesRichTextRange.SetBegin(SectionCellNotesRichTextNavigator)
        TableNotesRichTextItem.AppendText SectonParagraphNotesRichTextRange.TextParagraph & Chr(13)    
       Loop While SectionCellNotesRichTextNavigator.FindNextElement(RTELEM_TYPE_TEXTPARAGRAPH)   
       TableNotesRichTextItem.EndInsert 
       
      Wend
      
      
      Set SectionNotesViewEntry = SectionNotesViewNavigator.GetNextDocument(SectionNotesViewEntry)
     Wend
     
     
     
    FinishOverToday:
     Call NewDoc.Save(True,True)
     Call NewUIWorkspace.ViewRefresh
     
    End Sub

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://cletgem.spaces.live.com/blog/cns!DC2AFAB4BD907791!2633.trak
    Weblogs that reference this entry
    • None