0

値が現在のデータベース内のドキュメントをループするという繰り返しがあります。これらのドキュメントにはデータベースとビュー名が含まれています。次に、繰り返しはデータベースを開き、データベース内からデータを表示および取得します。

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);
}       

これはすべてのブラウザで正常に機能しますが、Notesクライアントでxpageを表示すると、次のエラーが発生します。メソッドNotesDatabase.getView(string)nullの呼び出しで例外が発生しました

ServerプロパティとFilePathプロパティをログに書き込むことにより、dbOther変数が設定されることをテストしました。getViewsとgetAliasesを使用してループを生成することにより、ビューが表示されることを確認しました。ここでも、すべてのビューエイリアスが問題なくログに書き込まれました。

ドキュメントから値が正しく選択されていなかったが、同じエラーが発生した場合に備えて、ビュー名を手動で入力しました。

XPiNCの別のデータベースのビューに接続する方法はありますか?ビューデータソースをページに動的に追加できるXSnippetを見つけました。これで問題が回避できると思いますが、すべてを書き直す前に、別の解決策があるかどうかを確認したいと思いました。

4

1 に答える 1

3

データベースのハンドルを取得するこれらの他の方法のいくつかを試してください。

これは、パラメータ""の代わりに現在のサーバーを示すために使用します。null

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

これdatabase.getServer()は、nullパラメータの代わりに使用します。

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クライアントを使用していますか?

于 2012-08-08T17:49:50.373 に答える