Dialog + Replace

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

  1. Grrr

    Grrr Гость

    Здравствуйте! Пытаюсь через диалог вызвать форму(Tema) с новым полем значения (NovayaTema), после чего заменить значение поля (StarayaTema) в документах, кодик:
    Что я делаю не так? Спасибо.
     
  2. allex

    allex Гость

    А где в коде переменная NovayaTema ?
     
  3. Grrr

    Grrr Гость

    Novayatema это поле в форме Tema
     
  4. allex

    allex Гость

    Dim db As NotesDatabase
    Dim dc As NotesDocumentCollection
    Dim doc As NotesDocument
    Set db = session.CurrentDatabase
    Set dc = db.UnprocessedDocuments
    Set doc = dc.GetFirstDocument()
    If ws.DialogBox("Tema", False, False, False, True, False, False, "Изменение темы", doc , True) Then
    While Not(doc Is Nothing)
    Call doc.ReplaceItemValue("StarayaTema", doc.NovayaTema(0))
    Call doc.Save(False, False )
    Set doc = dc.GetNextDocument(doc)
    Wend
    Call ws.ViewRefresh
    End If
    End Sub
     
  5. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Код (Text):
    Dim dummydoc As NotesDocument
    ...
    Set dummydoc = db.CreateDocument()
    ...
    If ws.DialogBox("Tema", False, False, False, True, False, False, "Изменение темы", dummydoc , True) Then
    ...
    Call doc.ReplaceItemValue("StarayaTema", dummydoc.GetItemValue("NovayaTema"))
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Medevic
    +1
    Я бы тоже думмидок заколбасил
     
  7. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А еще можно просто через notesUIWorkspace.Prompt сделать. :(
     
  8. Grrr

    Grrr Гость

    Почему то не отрабатывает.. Вообще форму которую я вызываю содержит кнопку с формулой dblookup, которая присваивает значение другому полю (изменяемому) Tema. Незнаю влияет ли это как то на выполнение кода.

    Ура! Получилось по первому методу, почему то надо было назвать поле в форме поиска таким же именем что и в док-тах где делается замена.
     
  9. oshmianski

    oshmianski Гость

    Grrr
    RefreshParentNote?
     
  10. Grrr

    Grrr Гость

    По моему всё работает нормально. Операцию выполнял в папке, которая в конце кода рефрешится.
     
  11. Grrr

    Grrr Гость

    Спасибо Всем за советы, особенно allex'у! Чтобы не создавать новую тему, решил задать вопрос здесь.
    Нашёл небольшой примерчик выгрузки представления в лист экселя (книга lotus develop. toolbox), к сожалению там не учитываются формулы в столбцах, а есть возможность выгружать только поля, находящиеся в столбцах. Логичный вопрос: Можно ли добавив новое поле в форму и соответственно высчитывав нужные поля по формулам в нём, подставить его в представление? Отсюда ещё такой вопросик:
    Допустим я добавлю в форму новое поле, которое будет складывать два поля и другие операции (тут не важно), я должен буду обновить формы всех созданных ранее документов? Ведь до этого документа создавались пусть и по одноимённое форме, но без этого нового поля. Как обновить все документы по новой форме?
     
  12. medin84

    medin84 Well-Known Member

    Регистрация:
    27 июн 2007
    Сообщения:
    106
    Симпатии:
    0
    Смотри в хелпе ComputeWithForm
    примерно так
    Код (Text):
    Set doc=notesdocumentcollection.GetFirstDocument
    While Not(doc Is Nothing)
    call doc.ComputeWithForm( true, False )
    doc.Save True, False
    Set doc=notesdocumentcollection.GetNextDocument( doc )
    Wend
     
  13. Grrr

    Grrr Гость

    Интересно.. А агент с кодом
    это не то?
     
  14. Grrr

    Grrr Гость

    Кто сталкивался с такой проблемой при выгрузке в Excel: error 213: ole: automation object error?
    Add: видимо проблема с офисом (2003), попробую поставить 2007, думаю вопрос должен решиться.
     
  15. Grrr

    Grrr Гость

    Непонятнка получилась, не придал этому значения. В коде, почему то изменяет только один документ из коллекции..
     
  16. Medevic

    Medevic Что это ? :)
    Lotus team

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Потому что эта строчка практически лишена смысла:
    Call doc.ReplaceItemValue(Tema", doc.Tema(0))
     
  17. amigolinx

    amigolinx Гость

    Дело в том, что в результате выполнения на каждом доке из коллекции
    Call doc.ReplaceItemValue("Tema", doc.Tema(0))
    замена происходит, да, ... но значение поля заменяется само на себя же. То есть на пальцах - для замены ItemValue "Tema" на doc берется значение поля Tema на этом же doc. Не возникает ощущения дежавю после этого? dummydoc - рулит и notesUIWorkspace.Prompt - тоже, однозначно
     
Загрузка...
Похожие Темы - Dialog Replace
  1. RenatAhmetshin
    Ответов:
    14
    Просмотров:
    678
  2. Cleric-Lviv

    Решено Dialog.show()

    Ответов:
    4
    Просмотров:
    412
  3. valmont
    Ответов:
    5
    Просмотров:
    892
  4. orion
    Ответов:
    3
    Просмотров:
    1.254
  5. xpro
    Ответов:
    12
    Просмотров:
    1.949

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