当前位置:编程学习 > 网站相关 >>

如何用程序遍歷批量nsf的設計元素?

如何用程序遍歷批量nsf的設計元素,獲取這些設計元素的一些屬性(FROM ,VIEW, AGENT,SCRIPT LIBRARIES ),比如更新日期,prohibit design refresh 。

非常感謝!! design --------------------编程问答-------------------- 认真学习下类NotesNoteCollection及相关连的类,具体参考设计帮助文档 --------------------编程问答-------------------- 搜索一下openNTF,上面有样例代码
我见过上面有通过ls引入dll,直接用原生notes c api获取所有设计元素的例子 --------------------编程问答-------------------- 做各视图呗
视图选择:SELECT @IsAvailable($Title) & @IsAvailable($Flags)
简单功能里面就有一些简单属性,如 作者,创建日期,上次更新时间
元素名称:$Title
元素类型:$Flags 。这个类型不是直接写的 FORM,agent。具体太多,拿我们程序里面写好的公式给你看吧
@If(@IsAvailable($FORMULA);@If(@Contains($Flags;"F");"Folder";"View");@Contains($Flags;"f");"Agent";@Contains($Flags;"s");"ScriptLibray";@Contains($Flags;"#");"Frameset";@Contains($Flags;"U");"SubForm";@Contains($Flags;"W");"Page";@Contains($Flags;"m");"Outline";@Contains($Flags;"t");"DatabaseScript";@Contains($Flags;"i");"Image";$Title="$ACTIONS";"ShareAction";"Form")
是否允许刷新:@If(@Contains($Flags;"P");"否";"是")
然后用程序直接遍历视图就可以了 --------------------编程问答-------------------- 搜索下DXL技术 --------------------编程问答--------------------
引用 3 楼 mabao669 的回复:
做各视图呗
视图选择:SELECT @IsAvailable($Title) & @IsAvailable($Flags)
简单功能里面就有一些简单属性,如 作者,创建日期,上次更新时间
元素名称:$Title
元素类型:$Flags 。这个类型不是直接写的 FORM,agent。具体太多,拿我们程序里面写好的公式给你看吧
@If(@IsAvailable($FORMULA);@If(@Contains($Flags;"F");"Folder";"View");@Contains($Flags;"f");"Agent";@Contains($Flags;"s");"ScriptLibray";@Contains($Flags;"#");"Frameset";@Contains($Flags;"U");"SubForm";@Contains($Flags;"W");"Page";@Contains($Flags;"m");"Outline";@Contains($Flags;"t");"DatabaseScript";@Contains($Flags;"i");"Image";$Title="$ACTIONS";"ShareAction";"Form")
是否允许刷新:@If(@Contains($Flags;"P");"否";"是")
然后用程序直接遍历视图就可以了


那块板砖是我丢的,照你的办法拿不到设计元素,你是不是忘记介绍这种办法的运行环境了?
自己搭个测试server试试,把详细过程发出来 --------------------编程问答-------------------- Dim session As New NotesSession
Dim db As NotesDatabase
Set session = New NotesSession 
Set db = session.GetDatabase("oa.server.com","Applic\test.nsf")
formCount = 0
formCountZU = 0
formCountZU1 = 0
formCountZi = 0
msgString = ""
If db.Isopen Then                              '数据库 是否 可以打开
   ForAll forms In db.Forms
     formCount = formCount + 1
     If Not IsEmpty(forms) Then                '数据库 是否有 设计表单
        formCountZU = formCountZU + 1
        If Not forms.IsSubForm Then            '设计表单 是否是 子表单
           formCountZi = formCountZi + 1
           If Not IsEmpty(forms.Aliases) Then  '设计表单 是否 定义 别名
              formCountZU1 = formCountZU1 + 1
              msgString = msgString &Chr(10) &"  " &forms.Name &" - " &forms.Aliases(0)
           End If
        End If
     End If
   End ForAll
End If
If formCount > 0 Then
   MessageBox "数据库【" &db.Title &"】有可用设计表单 :" &formCount &"ZU:" &formCountZU &" ZU1:" _
    &formCountZU1 &" Zi:" &formCountZi & " 个 " & msgString
Else
   MessageBox "数控库没有设计表单"
End If --------------------编程问答--------------------
'看来很多童鞋没注意到类:
'举个设置所有元素禁止刷新的例子:
Function Prohibit_All_Design_Refresh(strServer As String,strPath As String)

Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As  NotesDocumentCollection
Dim doc As NotesDocument
Dim nc As NotesNoteCollection
Dim strNoteID As String

Set db =session.GetDatabase(strServer,strPath)
Set nc =db.CreateNoteCollection(False)
Call nc.SelectAllDesignElements( True )
Call nc.BuildCollection
strNoteID = nc.GetFirstNoteID( )
Set doc=db.GetDocumentByID(strNoteID)
While Not (doc Is Nothing)
If doc.HasItem("$Flags") Then
If (Instr(Ucase(Cstr(doc.GetItemValue("$Flags")(0))),"P"))<1 Then
Call doc.ReplaceItemValue("$Flags", Cstr(doc.GetItemValue("$Flags")(0))+"P")
Print Cstr(doc.GetItemValue("$TITLE")(0))
Call doc.Save(True,False)
End If
End If
strNoteID = nc.GetNextNoteID(strNoteID  )
If strNoteID <>"" Then
Set doc=db.GetDocumentByID(strNoteID)
Else
Set doc=Nothing
End If
Wend
Msgbox "Prohibit-All-Refresh - OK !",64,"Completed"

End Function
补充:企业软件 ,  Lotus
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,