S
SparkLone
Omh
Ок, я понял.. Но в итоге вышел на те же яйца, вид сбоку. Видимо надо что-то как-то компилитть, вот только что и как..
Второй вызов MessageBox показывает что скрипт по идее заменился. Открываю базу - старые значения выводятся. Открываю в редакторе - все новое. Приходится что то ручками менять в скрипте, сохранять (он видимо при этом перекомпиливает) - тогда все работает..
Интересно программно вообще реально поменять PostOpen в Database Script? Столкьо времени уже убил (
Ок, я понял.. Но в итоге вышел на те же яйца, вид сбоку. Видимо надо что-то как-то компилитть, вот только что и как..
Код:
Dim exporter As NotesDXLExporter
Dim importer As NotesDXLImporter
Dim dbCopy As NotesDatabase
Set dbCopy = New NotesDatabase("", "D:\dbscripts\new.nsf")
Set parser = session.CreateDOMParser
On Event PostDOMParse From parser Call postParse
Set exporter = session.CreateDXLExporter(db, parser)
Set importer=session.CreateDXLImporter(parser,dbCopy)
importer.DesignImportOption = DXLIMPORTOPTION_REPLACE_ELSE_IGNORE
Call exporter.Process
Код:
Sub postParse(xml As NotesDOMParser)
On Error Goto errline
Dim root As NotesDOMDocumentNode
Dim dbScriptList As NotesDOMNodeList
Dim dbScript As NotesDOMElementNode
Dim codeNodesList As NotesDOMNodeList
Dim codeNode As NotesDOMElementNode
Dim LotusScriptsNodeList As NotesDOMNodeList
Dim LotusScriptsNode As NotesDOMElementNode
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim newTextNode As NotesDOMTextNode
Set root=xml.Document
Set dbScriptList=root.GetElementsByTagName("databasescript")
For i=1 To dbScriptList.NumberOfEntries
Set dbScriptNode=dbScriptList.GetItem(i)
Set codeNodesList = dbScriptNode.GetElementsByTagName("code")
For j=1 To codeNodesList.NumberOfEntries
Set codeNode=codeNodesList.GetItem(j)
If codeNode.GetAttribute("event") = "postopen" Then
Set LotusScriptsNodeList = codeNode.GetElementsByTagName("lotusscript")
For k=1 To LotusScriptsNodeList.NumberOfEntries
Set LotusScriptsNode = LotusScriptsNodeList.GetItem(k)
Set newTextNode = root.CreateTextNode("Sub Postopen(Source As Notesuidatabase)"+Chr(13)+Chr(10)+"MsgBox {newcool}"+Chr(13)+Chr(10)+"End Sub"+Chr(13)+Chr(10))
Msgbox LotusScriptsNode.LastChild.NodeValue
Call LotusScriptsNode.ReplaceChild(newTextNode, LotusScriptsNode.FirstChild)
Msgbox LotusScriptsNode.LastChild.NodeValue
Next
End If
Next
Next
Call xml.Serialize
Exit Sub
errline:
Msgbox " Error " & Err & " in line " & Erl & " in function " & Lsi_info(2) & " : " & Error
End 1
End Sub
Второй вызов MessageBox показывает что скрипт по идее заменился. Открываю базу - старые значения выводятся. Открываю в редакторе - все новое. Приходится что то ручками менять в скрипте, сохранять (он видимо при этом перекомпиливает) - тогда все работает..
Интересно программно вообще реально поменять PostOpen в Database Script? Столкьо времени уже убил (