Как вы уже слышали, в Lotus Notes нет встроенных ограничений ссылочной целостности, вы должны сделать это сами.
Я бы не стал полагаться на ссылки на документы, поскольку они ориентированы на UNIDкоторый может измениться, если вы вырезаете и вставляете один и тот же документ, теряя при этом ссылку.Попробуйте,
1 / Создайте поле «ID» в каждом документе.Вы можете заполнить его, используя @ Unique в вычисляемом поле для создания идентификатора и сохранить его в документах в обеих базах данных.Вы можете создать агента для этого в lotusScript (LS) или формуле.(Рассмотрите возможность использования оператора оценивать при выполнении в LS)
2 / Создайте в каждой базе данных представление поиска, в котором перечислены документы с новым идентификатором (нене забудьте установить «порядок сортировки» столбца ID.
3 / Используя кнопку действия, которую можно настроить для обеих баз данных, вы можете создать функцию LS, которая откроетпротивоположные базы данных просматривают и возвращают поле идентификатора. ( NotesUIWorkspace.pickliststrings будет самым простым способом выбора документов, в противном случае можно создать диалоговое окно . Сохранить список результатов в поленазывается «IDID »в качестве списка с несколькими значениями.
4 / Может быть больше информации, которую вы хотите сохранить, например, название документа или автора, поэтому вам нужно будет получить дескрипторк этим документам, используя getdocumentbykey , а затем опрашивая поля, которые вам понадобятся для отображения информации на экране.
5 / Затем можно также добавить новое поле в полецелевой документЕсли вы ссылаетесь, назовите его «referrerID», который представляет собой список документов, которые ссылаются на текущий документ.Это сохранит двустороннюю связь.
Поле, в котором хранятся ссылки, должно быть многозначным, в противном случае становится довольно громоздким проходить по списку идентификаторов связанных документов и управлять ими.
В этом подходе используется статический ключ, поэтому вы можете копировать базы данных без потери отношений между документами, которые пользователь потратил на создание времени.Вы можете (и, вероятно, потеряете) эти отношения, если будете полагаться на универсальные идентификаторы документа (хорошо описанные в документации @ documentUniqueID ), если вы вырезаете и вставляете документ или копируете базу данных в другое место, где они становятся новымидокументам, несмотря на копирование тех же полей, и им будет назначен новый универсальный идентификатор, любые ссылки на документы для старого документа будут недействительными.
Если информация, отображаемая из другой базы данных, изменится, вам потребуетсячтобы иметь возможность регулярно обновлять эти данные, поэтому подумайте о том, чтобы написать запланированного агента, который сможет выполнить поиск и обновить соответствующие поля.
Если пользователь намеревается отменить связь или изменить отношения между документами, тогда выВам нужно будет добавить функции, которые будут проходить по ключевым полям и поддерживать списки в соответствии с тем, что делает пользователь.Итак, как я уже сказал, для плоской структуры данных Lotus Notes необходимо самостоятельно управлять всеми ограничениями целостности.
Если вы хотите немного поумнеть, вы можете использовать встроенные представления, поскольку они do поддерживают ссылкииз другой базы данных на том же сервере.Некоторые советы по работе с ним в LotusScript здесь .И используйте дополнительное представление, которое классифицирует ваши данные по идентификатору.Встроенные представления в порядке, пока представление, на котором они основаны, не слишком велико, иначе это может повлиять на производительность формы, в которую оно встроено.