Програмно скопировать элементы дизайна из одной БД в другую

Тема в разделе "Lotus - Программирование", создана пользователем dimat, 23 дек 2009.

  1. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Есть необходимость скопировать определенные элементы дизайна (вьюхи, формы и т.д.) из одной БД в несколько других.
    Возможно ли сделать это на LS? Если да, то как?
     
  2. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Почитайте в справке про класс NotesNoteCollection. И имейте ввиду, что элементы дизайна также являются документами Лотус и могут быть получены/скопированы в другую базу как и другие документы. Попробуйте в дизайнере кликнуть правой кнопкой по к-либо элементу дизайна и посмотреть свойства.
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Строишь NotesNoteCollection, получаешь документ дизайн-элемента по NoteID, копируешь как документ.
    Вообще, это канадский баян.
     
  4. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Можно примерчик?
     
  5. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Код (Text):
    Dim s As New NotesSession
    Dim dbFrom as NotesDatabase
    Dim dbTo as NotesDatabase
    Set dbFrom = s.GetDatabase(...)
    Set dbTo = s.GetDatabase(...)
    Dim doc as NotesDocument
    Set doc = dbFrom.GetDocumentByID(...)
    call doc.CopyToDatabase(dbTo)
    Документ можно получить по ID или перебирать коллекцию доков и анализировать поле $TITLE.
     
  6. dimat

    dimat Lotus team
    Lotus team

    Регистрация:
    31 июл 2008
    Сообщения:
    518
    Симпатии:
    0
    Спасибо nvy.
    Еще один вопрос:
    Как я понимаю поле $title(0) содержит название объекта, а $title(1) псевдоним?
     
  7. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Нужно смотреть свойства нужного элемента дизайна (вторая закладка свойств, поля). Например, для представлений это не так, там название и псевдонимы собраны в одно значение через |.
     
  8. iki

    iki Гость

    Можно еще через DXL. Вот нашел в закромах кнопочку для экспорта. Импорт по аналогии.
    <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content">
    Код (LotusScript):
    Sub Click(Source As Button)
    Dim session As New NotesSession
    Dim db As NotesDatabase
    Set db = session.CurrentDatabase

    REM Open xml file named after current database
    Dim stream As NotesStream
    Set stream = session.CreateStream
    path$ = "r:\dxl\"
    filename$ = Left(db.FileName, Len(db.FileName) - 3) & "dxl"
    filename$ = path$ & filename$
    If Not stream.Open(filename$) Then
    Messagebox "Cannot open " & filename$,, "Error"
    Exit Sub
    End If
    Call stream.Truncate

    REM Create note collection
    Dim nc As NotesNoteCollection
    Set nc = db.CreateNoteCollection(False)
    Call nc.SelectAllFormatElements(False)
    nc.SelectForms = True
    Call nc.BuildCollection

    REM Export note collection as DXL
    Dim exporter As NotesDXLExporter
    Set exporter = session.CreateDXLExporter(nc, stream)
    Call exporter.Process
    End Sub
     
Загрузка...

Поделиться этой страницей