问题描述
如何用程序遍歷批量nsf的設計元素,獲取這些設計元素的一些屬性(FROM,VIEW,AGENT,SCRIPTLIBRARIES),比如更新日期,prohibitdesignrefresh。非常感謝!!
解决方案
解决方案二:
认真学习下类NotesNoteCollection及相关连的类,具体参考设计帮助文档
解决方案三:
搜索一下openNTF,上面有样例代码我见过上面有通过ls引入dll,直接用原生notescapi获取所有设计元素的例子
解决方案四:
做各视图呗视图选择: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试试,把详细过程发出来
解决方案七:
DimsessionAsNewNotesSessionDimdbAsNotesDatabaseSetsession=NewNotesSessionSetdb=session.GetDatabase("oa.server.com","Applictest.nsf")formCount=0formCountZU=0formCountZU1=0formCountZi=0msgString=""Ifdb.IsopenThen'数据库是否可以打开ForAllformsIndb.FormsformCount=formCount+1IfNotIsEmpty(forms)Then'数据库是否有设计表单formCountZU=formCountZU+1IfNotforms.IsSubFormThen'设计表单是否是子表单formCountZi=formCountZi+1IfNotIsEmpty(forms.Aliases)Then'设计表单是否定义别名formCountZU1=formCountZU1+1msgString=msgString&Chr(10)&""&forms.Name&"-"&forms.Aliases(0)EndIfEndIfEndIfEndForAllEndIfIfformCount>0ThenMessageBox"数据库【"&db.Title&"】有可用设计表单:"&formCount&"ZU:"&formCountZU&"ZU1:"_&formCountZU1&"Zi:"&formCountZi&"个"&msgStringElseMessageBox"数控库没有设计表单"EndIf
解决方案八:
'看来很多童鞋没注意到类:'举个设置所有元素禁止刷新的例子:FunctionProhibit_All_Design_Refresh(strServerAsString,strPathAsString)DimsessionAsNewNotesSessionDimdbAsNotesDatabaseDimviewAsNotesViewDimdcAsNotesDocumentCollectionDimdocAsNotesDocumentDimncAsNotesNoteCollectionDimstrNoteIDAsStringSetdb=session.GetDatabase(strServer,strPath)Setnc=db.CreateNoteCollection(False)Callnc.SelectAllDesignElements(True)Callnc.BuildCollectionstrNoteID=nc.GetFirstNoteID()Setdoc=db.GetDocumentByID(strNoteID)WhileNot(docIsNothing)Ifdoc.HasItem("$Flags")ThenIf(Instr(Ucase(Cstr(doc.GetItemValue("$Flags")(0))),"P"))<1ThenCalldoc.ReplaceItemValue("$Flags",Cstr(doc.GetItemValue("$Flags")(0))+"P")PrintCstr(doc.GetItemValue("$TITLE")(0))Calldoc.Save(True,False)EndIfEndIfstrNoteID=nc.GetNextNoteID(strNoteID)IfstrNoteID<>""ThenSetdoc=db.GetDocumentByID(strNoteID)ElseSetdoc=NothingEndIfWendMsgbox"Prohibit-All-Refresh-OK!",64,"Completed"EndFunction