用lotusscript动态刷新登录页表单设计
来源:互联网 发布:淘宝相片拍摄相机 编辑:程序博客网 时间:2024/04/29 18:52
用lotusscript动态刷新登录页表单设计
1、到服务器上查找是否有domcfg.nsf库,如果没有,直接把自己设计的domcfg.nsf库考到服务器上,如果有,执行2
2、从服务器的domcfg.nsf库中查找登录页,如果有,先将“$$LoginUserForm”表单导成dxl,然后将form节点下属的name节点的nodevalue值改成“$$LoginUserForm”+时间,然后再把dxl文件导到domcfg.nsf库中(该操作是保存原有的登录页表单)。
3、将自己设计的库中的“$$LoginUserForm”表单导成dxl,然后再导入到服务器的domcfg.nsf库中。
另:
如果想直接修改某个表单的设计也是同样的道理。因为domino的数据库设计、表单、视图等等都是标准的xml文件,所以如果要修改表单设计,可以先把表单导成dxl文件(xml格式),然后,直接对dxl中具体的node作修改,然后重新导入dxl文件即可实现对表单设计的动态修改。
Option Public
Option Compare Nocase
Sub Initialize
On Error Goto errhandle
Dim session As notessession
Dim db1 As notesdatabase
Dim db2 As notesdatabase
Dim nc As notesnotecollection
Dim nc2 As notesnotecollection
Dim stream As notesstream
Dim exporter As NotesDXLExporter
Dim importer As notesdxlimporter
Dim importer0 As notesdxlimporter
Dim form As NotesForm
Dim nid As String
Dim file1 As String
Dim file2 As String
Dim file3 As String
Dim outputFile As String
Dim timeStr As String
Dim inputStream As NotesStream, outputStream As NotesStream
Dim domParser As NotesDOMParser
Dim docNode As NotesDOMDocumentNode
Dim docRootNode As NotesDOMNode
file1 = ""
file2 = ""
file3 = ""
flag = False
timeStr = Replace(Replace(Replace(Cstr(Now),"-",""),":","")," ","")
Set session = New notessession
Set db1 = session.currentdatabase
'先判断当前服务器是否有登录库
Set db2 = New NotesDatabase(db1.Server, "domcfg.nsf")
'如果没有登录库
If Not db2.IsOpen Then
Set db2 = db1.CreateFromTemplate(db1.Server,"domcfg.nsf", True)
Else
Set form = db2.GetForm("$$LoginUserForm")
'如果存在登录页,首先备份登录页''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If Not form Is Nothing Then
Set nc = db2.createnotecollection(False)
Call nc.buildcollection
Set nc2 = db2.createnotecollection(False)
nc2.SelectForms = True
Call nc2.BuildCollection
nid = nc2.GetFirstNoteId
'查找登录页表单
Forall f In db2.Forms
If Not f.IsSubForm Then
If f.name = "$$LoginUserForm" Then
nc.Add(nid)
Exit Forall
End If
nid = nc2.GetNextNoteId(nid)
End If
End Forall
'将表单导成dxl文件,并存在临时文件夹中
Set stream = session.CreateStream
file2 = "c:/temp/login_back_" & timeStr & "1.dxl"
Call stream.Open(file2)
Set exporter=session.createDXLexporter(nc, stream)
Call exporter.process
Call stream.close
'删除原有登录页
Call form.Remove
'读取刚才的dxl文件(xml格式的文件),修改登录页名称
file3 = "c:/temp/login_back_" & timeStr & "2.dxl"
Set session = New NotesSession
Set outputStream =session.CreateStream
outputStream.Open(file3)
Set inputStream = session.CreateStream
inputStream.Open (file2)
If inputStream.Bytes > 0 Then
Set domParser=session.CreateDOMParser(inputStream)
Call domParser.Process
Set docNode = domParser.Document
Set docRootNode = docNode.DocumentElement
If Not docRootNode.IsNull Then
'修改文件中form节点的下属节点name的nodevalue的值
Call ChangeNode(docRootNode,timeStr)
Call domParser.setoutput(outputStream)
Call domParser.Serialize
End If
End If
'导入备份登录页
Set importer0=session.createdxlimporter(outputStream, db2)
importer0.designimportoption = 2
Call importer0.process
Set importer0 = Nothing
Call outputStream.Truncate
Call inputStream.Truncate
Call outputStream.Close
Call inputStream.Close
End If
'导入登录页'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Set nc = db1.createnotecollection(False)
Call nc.buildcollection
Set nc2 = db1.createnotecollection(False)
nc2.SelectForms = True
Call nc2.BuildCollection
nid = nc2.GetFirstNoteId
'取得当前库的登录页表单
Forall f In db1.Forms
If Not f.IsSubForm Then
If f.name = "$$LoginUserForm" Then
nc.Add(nid)
Exit Forall
End If
nid = nc2.GetNextNoteId(nid)
End If
End Forall
'导成dxl文件,并存在临时文件夹中
Set stream = session.CreateStream
file1 = "c:/temp/login_" & timeStr & ".dxl"
Call stream.Open(file1)
'把dxl导入到domcfg库中
Set exporter=session.createDXLexporter(nc, stream)
Set importer=session.createdxlimporter(stream, db2)
importer.designimportoption = 2
Call exporter.process
Call importer.process
Call stream.Truncate
Call stream.close
End If
Exit Sub
errhandle:
Msgbox Cstr(Erl) & " " & Error
End Sub
'修改form节点的name属性值
Sub ChangeNode(childNode2 As NotesDOMNode, str1 As String )
On Error Goto errhandle
Dim docNameMap As NotesDOMNamedNodeMap
Dim childNode3 As NotesDOMNode
Dim tempNode As NotesDOMNode
Dim i As Integer
While Not childNode2.IsNull
If childNode2.NodeType <> 3 Then
If childNode2.HasChildNodes Then
Set childNode3 = childNode2.FirstChild
While Not childNode3.IsNull
Call ChangeNode(childNode3,str1)
If Not childNode3.IsNull Then
Set childNode3 = childNode3.NextSibling
End If
Wend
End If
End If
Set docNameMap = childNode2.Attributes
For i =1 To docNameMap.NumberOfEntries
Set tempNode = docNameMap.GetItem(i)
If tempNode.NodeValue = "$$LoginUserForm" Then
tempNode.NodeValue="$$LoginUserForm_" & str1
Exit Sub
End If
Next
Set childNode2 = childNode2.NextSibling
Wend
Exit Sub
errhandle:
Msgbox "ChangeNode:" & Cstr(Erl) & "," & Error$
End Sub
- 用lotusscript动态刷新登录页表单设计
- 动态表单数据库设计
- 动态表单设计
- 动态表单设计
- 用js动态添加登录表单并完成提交实现在html注册后自动登录
- js登录特效+ajax提交表单+异步刷新验证
- Form动态表单设计的开发
- 关于动态表单的设计javaweb
- 设计和QQ一样动态登录界面
- 登录表单
- 用iframe实现提交表单不刷新
- bootstrap 表单 登录表单
- 用js动态添加表单
- 动态刷新
- 用Httpclient来Post表单实现登录
- 用LotusScript实现所有的公式语言
- 用LotusScript编写导出Excel参考实例
- 基于Eclipse下SWT的动态表单设计
- 怎样提高485总线的可靠性
- 昨天晚上余世维的讲座
- JavaScript:世界上误解最深的语言
- input高级限制级用法
- ADO.NET
- 用lotusscript动态刷新登录页表单设计
- JSP中文乱码问题解决方案
- 解决病毒Trojan.DL.Small.azt、Trojan.DL.QQHelper.dsb、Dropper.Agent.bba等
- 一些常用的JavaScript正则表达式
- AVR单片机初有小成,发篇文章庆贺一下呵呵
- vb实现与单片机的通讯问题(转载,经实验,正确!!!)
- 常用的匹配正则表达式和实例
- Javascript正则表达式测试网页
- 配置数据库连接池