Lotus Notes — Как включить перевод формулы при вводе в поле для автоматического заполнения другого поля?

#lotus-notes

#lotus-notes

Вопрос:

В моем приложении Lotus Notes есть 2 поля, ContactName и CompanyName .

CompanyName создайте формулу преобразования входных данных, которая будет проверять данные в ContactName для ссылки на представление, которое затем выдаст CompanyName эти данные.

 Company:= @Unique(@DbLookup("";@DbName;"Visitor List 1";@Text(ContactName);2));

@If(CompanyName = ""; @If(ContactName != ""; Company[1];"");@Text(companyname))
  

Однако возникает проблема с тем, что она не отображается автоматически, если только я не щелкну по другому полю, только тогда появятся данные. Мой план заключается в том, чтобы данные отображались быстро, как только я закончу заполнять ContactName

Для тестирования я попытался переместить приведенную выше формулу из CompanyName в ContactName , чтобы посмотреть, может ли реакция сработать быстрее. Вроде как да. Если я просто скопирую и вставлю формулу как есть, CompanyName данные просто переопределят ContactName данные.

Я изменил его на:

 Company:= @Unique(@DbLookup("";@DbName;"Visitor List 1";@Text(ContactName);2));

@If(CompanyName = ""; @Text(CompanyName = @If(ContactName != ""; Company[1];""));@Text(companyname))
  

Но это просто немедленно выдает ContactName значение 0. Что еще я могу сделать, чтобы изменить формулу?

Комментарии:

1. ContactName это список значений?

2. Это поле в форме. Но у меня есть представление, которое компилирует свои данные из всех документов в базе данных, на которые затем ссылаются с помощью формулы. То же самое относится и к CompanyName . Как это работает, когда я ввожу ContactName , CompanyName затем выполняется поиск в созданном мной представлении, чтобы найти последний сохраненный документ с соответствующим ContactName , скопируйте CompanyName данные и вставьте их в текущее CompanyName поле.

Ответ №1:

У меня иногда возникала ваша проблема, и в зависимости от типа поля вы можете настроить его так, чтобы обновлять форму при ее изменении или принудительно выполнять то же самое с помощью lotuscript .

Когда ваше поле представляет собой список

введите описание изображения здесь

Когда у вас есть поле списка, вы можете настроить его как показано на рисунке.

Когда ваше поле представляет собой текстовое поле

Я думаю, это ваш случай, и вы можете принудительно обновить, как при использовании F9 with lotuscript , чтобы в поле было какое-то событие, в котором вы можете разработать свое решение, и одно из них Exiting , вы можете попробовать это, чтобы принудительно обновить форму полностью, когда пользователь выходит из поля:

 Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument

Set uidoc = ws.Currentdocument

Call uidoc.Refresh
Call uidoc.RefreshHideFormulas
Call uidoc.Reload
  

Комментарии:

1. Настройки параметров очень помогают. Но, похоже, возникает проблема, если я захочу изменить данные CompanyName , они автоматически вернутся к значению, которое они дают мне из своего автоматического поиска. Скажем, например, выбор ContactName [Lee] дает мне CompanyName [Z]. Если я захочу изменить CompanyName на [ZI], поле просто вернется к [Z] для меня. Есть ли возможность предотвратить это?

2. Два способа: настроить поле подобным образом computed when composed или сохранить первое значение в другом поле при сохранении формы.