Аналог @dblookup в Lotusscript

Тема в разделе "Lotus - Программирование", создана пользователем -, 3 мар 2008.

  1. Гость

    Мне надо по событию OnChange - поля Pole_1, поменять значение поля - Pole_2. Если известно только имя представления и значение сосднего столбца представления.
    Может кто-сталкивался с подстановкой значения в поле, связяного с другим значением в том же документе?
     
  2. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Либо я сегодня туплю, либо задачи описвают сложно...

    Поля в одном документе? Если в одном, то в чем проблема - второе поле computed - для того, чтобы второе поле пересчиталось нужно инициировать обновление документа. Если поля в разных документах, то на PostSave я бы нашел нужный мне документ (view.GetDocumentByKey) и изменил значение
     
  3. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    А не поздно ли в PostSave? Права уже могут измениться (т.е. прав автора уже может не быть). И 7-ка выдаст ошибку при вызове notesDocument.Save (хотя в 6-ке работало).

    В данном случае можно использовать Evaluate (ищем в хелпе "Using the Evaluate statement" :)).


    Невнимательно прочел. Это для одного документа. :)
     
  4. Гость

    Во-первых, @DbLookUp можно использовать и в Lotus Script через Evaluate, если, конечно, это решит проблему..А во вторых - неужели так сложно взять из известного представления документ по известному ключу ? Даже если представление не отсортировано и вы принципиально не хотите его сортировать или создать новое отсортированное, можно, в конце концов, просто перебрать документы представления в цикле и установить нужную запись.
     
  5. Гость

    Народ я вроди бы накрапал уже что-то, вот только не знаю как из Source взять название текущего поля:
    Код (Text):
    Sub Onchange(Source As Field)

    Dim session As NotesSession
    Dim db As NotesDatabase
    Dim doc As NotesDocument
    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim cDoc As NotesDocument
    Dim view As NotesView

    Set uidoc = workspace.CurrentDocument  
    Set cDoc= uidoc.Document

    Set session = New NotesSession 
    Set db = session.GetDatabase("Elephant/ICTP","Work/Docs/performing.nsf")
    Set view = db.GetView ("ContragentsForContracts" )
    Set doc = view.GetDocumentByKey(Source)

    Call uidoc.FieldSetText(TaxPay, doc.GetItemValue ("ContractPartyActive")(0))

    Call cDoc.Save (True, False,False) 
    Call uidoc.Refresh
    Call uidoc.RefreshHideFormulas

    End Sub
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    В данном коде никак.
    Захардкодить.
     
  7. Гость

    Только не умирай и не падай со смеху со стула.
    > Захардкодить.
    Это что такое?
     
  8. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Хардкодить от англ. hard code, т.е., в частном случае, написать название переменной от руки, таким образом получив непортабельный код.
    Но тут его и невозможно получить: class Field не предоставляет ничегошеньки :)

    Вообще, вышеприведённый код ничё, только я бы заменил строку
    Код (Text):
    Call uidoc.FieldSetText(TaxPay, doc.GetItemValue ("ContractPartyActive")(0))
    на
    Код (Text):
    Call doc.ReplaceItemValue(TaxPay, doc.GetItemValue("ContractPartyActive")(0))
     
  9. Гость

    Не верю от нефиг делать значит передается в функцию переменная Source?
     
  10. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Represents a field on a form.

    Note
    This class is not supported in COM.
    Events
    Entering
    Exiting
    OnBlur
    OnChange
    OnFocus
    Access
    To access a field, write a script that responds to one of its events. A Field object has no properties or methods.
     
  11. Гость

    Может, кто знает, как ускорить работу OnChange, что бы процедура отрабатывалась не после потери фокуса полем, а сразу же как только выбрали значение из окна?

    Убедил, забираю слова назад :)
     
  12. Kee_Keekkenen

    Kee_Keekkenen Well-Known Member

    Регистрация:
    5 сен 2006
    Сообщения:
    616
    Симпатии:
    4
    а поле какого типа(Pole_1) ?
     
  13. Sandr

    Sandr Гость

    Денис Кириченко
    Использовать onclick
     
  14. fedotxxl

    fedotxxl Well-Known Member

    Регистрация:
    9 ноя 2005
    Сообщения:
    614
    Симпатии:
    0
    Бред какой-то... мы изменяем значение в связанном документе, а потом не сохраняем главный. И что получится?
     
  15. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Поставить галку Refresh fields on keyword change в свойствах поля. И обрабатывать изменения не в событие OnChange поля, а в событии PostRecalc (или QueryRecalc) документа.

    Ты про что? Документ один. Еще в первом посте написано.
     
  16. Гость

    А код на Java перевести поможешь :(
     
  17. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Денис Кириченко
    Там JavaScript :(
     
  18. Гость

    на Call uidoc.Refresh у меня ошибка - "Попытка выполнить вложенные события формы". Выполняю это я в событии -Queryrecalc. Что делать, помогите :)


    на Call uidoc.Refresh у меня ошибка - "Попытка выполнить вложенные события формы". Выполняю это я в событии -Queryrecalc.
     
  19. Medevic

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

    Регистрация:
    10 дек 2004
    Сообщения:
    3.346
    Симпатии:
    2
    Убрать Call uidoc.Refresh. Если поставишь галку, как я писал, то этот метод не нужен.
     
  20. Гость

    Полю присваивается значение, но после завершения работы скрипта, оно пропадает.
    Значение полю я присваиваю, через - Call uidoc.FieldSetText("TaxPay", doc.GetItemValue ("ContractPartyActive")(0))
     
Загрузка...
Похожие Темы - Аналог @dblookup Lotusscript
  1. wellsun
    Ответов:
    0
    Просмотров:
    127
  2. oshmianski
    Ответов:
    7
    Просмотров:
    743
  3. DNT
    Ответов:
    13
    Просмотров:
    1.302
  4. ESWANT
    Ответов:
    0
    Просмотров:
    1.319
  5. Dragon108
    Ответов:
    6
    Просмотров:
    2.449

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