いいね!数

0

閲覧数
105

Xpagesで開発しているのですが、フォームを開くときにssjsのgetRead()を使って特定のDBの

未読文書数をカウントしてフィールドに入れています。

var db:NotesDatabase = session.getDatabase("Server1", "common\\BB.nsf",false);   
var v:NotesView = db.getView("(forXpages)");

var doc:NotesDocument = v.getFirstDocument(); 
var i = 0;
while (doc != null) {
    if(doc.getRead()==false){
    i = i +1
    }
    var tmpdoc:NotesDocument = v.getNextDocument(doc);
    doc.recycle();
    doc = tmpdoc;
    };
var ucount = i;
var unReadField = getComponent("All_bb");
unReadField.setValue(ucount);

今までうまくいっていたのですが、最近作成したテストユーザーで未読文書が正常にカウント

されなくなりました。クライアントでDBを開いてみると未読文書が20文書あるのにも

関わらず、上記の結果は未読文書が0件となってしまいます。実際はいくつかのDBの未読

文書数を見に行っているのですが、全て未読文書数は0件となってしまいます。

 if(doc.getRead()==false) の部分を if(doc.getRead()==true)と変えてみると、文書が全て既読として

カウントされていることがわかりました。

なぜ正しく未読文書数がカウントされないのでしょうか?この原因と対処法はありますでしょうか?

 

 

 

サーバー情報: | クライアント情報: | 
カテゴリ:アプリ開発 - XPages | タグ:
  | 質問日時:2017/06/29 11:15:54

回答・コメント

いいね!数

0

1.そもそもDBとビュー名は正しいのか?

 別のところを見てないか?

2.他のユーザではどうななのか?

3.未読テーブルが壊れている

 一度全部既読 or 未読にしてみる

4.特定のビューではなく、NotesDatabase全体の未読文書数は取得できるのか?

 getAllUnreadDocuments を使ってみる

 

等々、まだまだやるべきことは残ってます。

 

回答日時:2017/06/29 14:07:04

いいね!数

0

およよさん、

アドバイスありがとうございます。

1.そもそもDBとビュー名は正しいのか?

他のユーザーは正しく未読文書がカウントされるのでDBとビュー名は間違ってはいないです。

2.他のユーザではどうななのか?

他のユーザーは700人ぐらいいるのですが、この現象が出ているのは現在のところ1ユーザーだけです。

3.未読テーブルが壊れている

全て未読、既読にしても変化はありません。

4.特定のビューではなく、NotesDatabase全体の未読文書数は取得できるのか?

 getAllUnreadDocuments を使ってみる

getAllunreadDocumentsでも結果は同じでした。

複数のDBの未読文書数を見にいっているのですが、なぜかすべてのDB(全部で12個)で未読文書数が

取得できません。

その他、ヒントがあれば助かります。

回答日時:2017/06/29 15:44:55

いいね!数

0

解決しました!

該当ユーザーがLocalDomainServersグループにリストされている+該当DBでLocalDomainServerグループが

"サーバーグループ"で「管理者」としてリストされていることが原因だったようです。

LocalDomainServersグループから該当ユーザーを外したところ、未読情報が取得できるようになりました。

ACLと未読情報は関係しているのでしょうか・・・。別の人間がグループをいじっていたようでなかなか

原因がわかりませんでした。

 

回答日時:2017/06/29 16:51:29