Событие нажатия кнопки — сценарий Lotus

Мне нужен правильный сценарий лотоса для события нажатия кнопки, который при нажатии выводит список ключевых слов персонала для выбора и размещения в поле Superior1... Я не уверен в параметрах, которые нужно указать... пожалуйста, помогите мне с этим.. Я следовал приведенному ниже сценарию, и он не сработал... он отображается в пустом диалоговом списке... :(... или же предоставьте мне альтернативную формулу или сумму, чтобы решить это... большое спасибо...

Sub Click(Source As Button)
    Dim session As New notessession
    Dim view,view1 As NotesView 
    Dim doc,doc1 As notesdocument
    Dim db As Notesdatabase
    Set db=session.CurrentDatabase 

    Dim Overdb As notesdatabase

    Set Overdb=session.GetDatabase(db.server, "Master\\ASEAN_Staff.nsf")

    Dim workspace As New NotesUIWorkspace
    Dim uidoc As NotesUIDocument
    Dim picklist As Variant
    Set uidoc = workspace.CurrentDocument

    If Superior1= "" Then

        Sup1$ = uidoc.FieldGetText("Superior1")

        picklist = workspace.PickListStrings( PICKLIST_CUSTOM,_
        False,_
        db.server,_
        "Master\\ASEAN_Staff.nsf",_
        "x_asean_search",_
        "Select Name",_
        4,_
        Sup1$ ) 


    End If

End Sub

Большое спасибо, Христо и mbonaci... :) Я разобрался со строками выбора, и у меня есть то, что я хотел, то есть отобразить список ключевых слов Superior1, классифицированных по групповым столбцам... вот сценарий, который я использовал. ..

Sub Click(Source As Button)
Dim session As New notessession
Dim view As NotesView 
Dim view1  As notesview
Dim doc,doc1 As notesdocument
Dim db As Notesdatabase
Set db=session.CurrentDatabase 

Dim Overdb As notesdatabase

Set Overdb=session.GetDatabase(gsserver, gspath + "Master\\ASEAN_Staff.nsf")

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim picklist As Variant
Set uidoc = workspace.CurrentDocument

If Superior1= "" Then

    'Sup1 = uidoc.FieldGetText("Superior1")

    'Ofc = uidoc.FieldGetText("Office")
    Gp = uidoc.FieldGetText("Group")
    'og = doc.Office + doc.Group


    picklist = workspace.PickListStrings( PICKLIST_CUSTOM,_
    False,_
    gsserver,_
    "Master\\ASEAN_Staff.nsf",_
    "x_asean_search",_
    "Select Name",_
    "Choose",_
    1,_
    Gp ) 



End If

End Sub

Теперь при выборе любого ключевого слова из списка... например: "Руководитель" должен быть помещен в поле "Superior1" текущего документа/формы... wazz скрипт для этого... пожалуйста, помогите мне...


person SarahXP    schedule 02.03.2011    source источник


Ответы (2)


Как написано, PickListStrings должно привести к ошибке, потому что в седьмой позиции отсутствует аргумент — prompt$ (справка для PickListStrings), а Notes не ожидает числа (в данном случае 4) в качестве аргумент.

Кроме этого:

  • Пробовали ли вы открыть целевое представление ("x_asean_search" в "Master\ASEAN_Staff.nsf") и ввести строку из поля Superior1 (значение, которое вы тестируете), чтобы убедиться, что такая категория существует? Фокус должен переместиться на эту категорию, если она существует в представлении.
  • Попробуйте напечатать Sup1$ в строке состояния, чтобы убедиться, что оно содержит ожидаемое значение.
  • Является ли четвертый столбец представления тем, какие значения вы хотите вернуть?

Не вызывает проблем, но полезно иметь в виду:

  • Dim view,view1 As NotesView объявляет переменную view типа Variant и view1 типа NotesView. Поместите их в отдельные строки, чтобы избежать возможности неожиданного поведения. Например, здесь оператор If (view is Nothing) Then приведет к ошибке «Несоответствие типов».
  • Переменная Superior1 из If Superior1= "" Then кажется вариантом со значением EMPTY, поэтому условие всегда верно. Использование Option Declare является хорошей практикой, которая предотвратит компиляцию.
person Hristo    schedule 02.03.2011
comment
@mbonaci прав, предлагая использовать формулу как гораздо более краткое решение. Насколько я понимаю, @SarahXP хочет ограничить выбор из целевого представления теми категориями, которые соответствуют значению в поле Superior1 открытого в данный момент документа. В этом случае она должна вместо этого использовать @DbLookup, например: @DbLookup( "ReCache"; @Subset(@DbName; 1) : "Master\\ASEAN_Staff.nsf"; "x_asean_search"; Superior1; 4) и использовать список результатов в диалоговом окне. - person Hristo; 03.03.2011
comment
@SarahXP - Кроме того, если вы решили придерживаться LotusScript, попробуйте удалить одну обратную косую черту из Master\\ASEAN_Staff.nsf - я думаю, вам нужен только один. - person Hristo; 03.03.2011
comment
Ну... У меня есть решение для получения выбранного ключевого слова в поле Superior1... может ли кто-нибудь помочь мне с этим... Я хочу сравнить комбинацию 2 полей Office & Fields со столбцом OfficeGroup представления. .. например: значение поля A и значение поля B со столбцом AB... как мне объединить оба поля ..? Я предпочитаю LOTUS SCRIPT вместо формулы для этого, плз... спасибо... - person SarahXP; 03.03.2011
comment
Чтобы объединить значения двух элементов в документе с помощью LotusScript (при условии, что каждое поле содержит одно значение), используйте notesDoc.GetItemValue("fieldA")(0) + notesDoc.GetItemValue("fieldB")(0) - person Hristo; 03.03.2011
comment
@SarahXP - результатом NotesUIWorkspace.PickListStrings является вариант, содержащий список строк, когда пользователь нажимает OK, поэтому, поскольку вы разрешаете выбирать только одно значение, вы можете получить к нему доступ с помощью picklist(0). Однако обратите внимание, что это вызовет ошибку, если пользователь нажмет кнопку «Отмена», и в этом случае диалоговое окно вернет вариант EMPTY. Чтобы учесть этот случай, выполните If IsEmpty(picklist) Then Exit Sub. - person Hristo; 07.03.2011

Почему бы вам просто не использовать поле списка диалогов с формулой @DbColumn в качестве вариантов (вторая вкладка свойств поля):

@DbColumn( class : cache ; server : database ; view ; columnNumber )

Пример:

@DbColumn( "ReCache"; ""; "x_asean_search"; 4 )

вернет все значения из четвертого столбца представления "x_asean_search" текущей базы данных.

Подробности здесь: http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_DBCOLUMN_NOTES_DATABASES.html

person Marko Bonaci    schedule 02.03.2011
comment
thx Hristo & mbonaci... Я разобрался со строками списка выбора и получил то, что хотел... т.е. отобразить список ключевых слов Superior1 для выбора. Я использовал следующий сценарий: - person SarahXP; 03.03.2011
comment
Ну... У меня есть решение для получения выбранного ключевого слова в поле Superior1... может ли кто-нибудь помочь мне с этим... Я хочу сравнить комбинацию 2 полей Office & Fields со столбцом OfficeGroup представления. .. например: значение поля A и значение поля B со столбцом AB... как мне объединить оба поля ..? Я предпочитаю LOTUS SCRIPT вместо формулы для этого, плз... спасибо... - person SarahXP; 03.03.2011