H
hosm
Подкорректирован код ToxaRat из темы про наследование шаблонов
Пусть тут будет.
Так как на маках и всяких прочих никсах не пробовала делать обновление, деклараций для этих платформ и кроссплатформенной обработки нет.
Вариант для WinAPI:
Обновление дизайна
Замена дизайна из указанного шаблона
P.S. destPath, templateDB и targetDB имеют вид <имя сервера>!!<путь к бд> для базы на сервере,
для локальной БД достаточно указать <путь к бд>.
Пусть тут будет.
Так как на маках и всяких прочих никсах не пробовала делать обновление, деклараций для этих платформ и кроссплатформенной обработки нет.
Вариант для WinAPI:
Код:
Declare Private Function W32_NSFDbOpen Lib "nnotes" Alias "NSFDbOpen" (Byval PathName As Lmbcs String, hDB As Long) As Integer
Declare Private Function W32_NSFDbClose Lib "nnotes" Alias "NSFDbClose" (Byval hDB As Long) As Integer
'обновление
Declare Private Function W32_DesignRefresh Lib "nnotes" Alias "DesignRefresh" (Byval ServerName As Lmbcs String, Byval hDB As Long, Byval dwFlags As Long, Byval abortCheck As Long, Byval messageProc As Long) As Integer
'замена дизайна из шаблона
Declare Function W32_DesignReplace Lib "nnotes.dll" Alias "DesignReplace" (Byval ht As Long, Byval hDB As Long, Byval dw1 As Long, Byval dw2 As Long, Byval dw3 As Long, Byval dw4 As Long) As Integer
Код:
Sub RefreshDesign(destPath As String)
Dim rc As Integer, hDb As Long
Call AddLog("Обновление на сервере: " & destPath & " ...")
rc = W32_NSFDbOpen(destPath, hDb) ' Open the db in the API and get a handle to the open db
If rc <> 0 Then
Call AddLog("Не удаётся открыть БД - Error Code " & Cstr(rc))
Else
rc = W32_DesignRefresh("", hDb, 0, 0, 0)
If rc <> 0 Then
Call AddLog("Не удалось обновить БД - Error Code " & Cstr(rc))
End If
Call W32_NSFDbClose(hDb)
End If
End Sub
Код:
Sub ReplaceDesign(Byval templateDB As String, Byval targetDB As String)
Dim status As Integer
Dim htemplate As Long
Dim htarget As Long
status = W32_NSFDbOpen(templateDB, htemplate)
If status<>0 Then
Call AddLog("Не удалось открыть шаблон " & templateDB & " - Error Code " & Cstr(status) )
Exit Sub
End If
status = W32_NSFDbOpen(targetDB, htarget)
If status<>0 Then
Call AddLog("Не удалось открыть БД " & targetDB & " - Error Code " & Cstr(status) )
Call W32_NSFDbClose(htemplate)
Exit Sub
End If
Call W32_DesignReplace(htemplate, htarget, 1, 0, 0, 0)
Call W32_NSFDbClose(htemplate)
Call W32_NSFDbClose(htarget)
End Sub
P.S. destPath, templateDB и targetDB имеют вид <имя сервера>!!<путь к бд> для базы на сервере,
для локальной БД достаточно указать <путь к бд>.