Невозможно сослаться на представление в другой базе данных из XPiNC

У меня есть повтор, где значение циклически перебирает документы в текущей базе данных, эти документы содержат базу данных и имя представления. Затем повтор открывает базу данных, просматривает и извлекает данные из них:

var dbOther:NotesDatabase = session.getDatabase(null, doc.getItemValueString("Database"));
if(dbOther != null){
    var lookupView:NotesView = dbOther.getView(doc.getItemValueString("ViewName"));
    var viewNav:NotesViewNavigator = lookupView.createViewNavFromCategory(key);
}       

Это прекрасно работает во всех браузерах, но если я просматриваю xpage в Notes Client, я получаю следующую ошибку: Возникла исключительная ситуация при вызове метода NotesDatabase.getView (string) null

Я проверил, что переменная dbOther устанавливается путем записи свойств Server и FilePath в журнал. Я проверил, что он может видеть представления, генерируя цикл, используя getViews и getAliases, снова все псевдонимы представления были записаны в журнал без проблем.

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

Есть ли способ подключиться к представлению в другой базе данных в XPiNC? Я нашел XSnippet, который позволяет вам динамически добавлять источники данных представления на вашу страницу, я думаю, что это может обойти мою проблему, но хотел выяснить, было ли альтернативное решение, прежде чем переписать все!

1 ответ

Решение

Попробуйте некоторые из этих других способов получить ручку на базе данных:

Этот использует "" вместо null параметр для указания текущего сервера:

var dbOther:NotesDatabase = session.getDatabase("", doc.getItemValueString("Database"))

Этот использует database.getServer() вместо нулевого параметра:

var dbOther:NotesDatabase = session.getDatabase(database.getServer(), doc.getItemValueString("Database"))

Этот использует sessionAsSigner получить доступ к базе данных (вместо использования учетных данных текущего пользователя):

var dbOther:NotesDatabase = sessionAsSigner.getDatabase(database.getServer(), doc.getItemValueString("Database"))

Вы используете клиент Lotus Notes 8.5.3?

Другие вопросы по тегам