いいね!数

0

閲覧数
259

お世話になります。

ディスカッションデータベースで親文書子文書の関連付けを変更したいのですが、
文書数が多いため、複数文書をまとめて変更したいと考えています。

実施したいこととしては
親文書Aの子文書すべてを親文書Bの子文書に変更したい

以前にも同様の質問があり実施しましたが、複数文書をまとめて対応したく、ご教授をお願いします。

下記のソースを参考にさせていただいています。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim newParent As NotesDocument

Set db = ws.CurrentDatabase.Database
Set doc = db.GetDocumentByID( ws.CurrentView.CaretNoteID ) 'フォーカスが当たっている文書を取得する
Set dc = ws.PickListCollection( 3, False, db.Server, db.FilePath, ws.CurrentView.View.Name, "移動先選択", "新たに親とする文書を選択します。")
Set newParent = dc.GetFirstDocument '新たに親となる文書を取得する
Call doc.MakeResponse( newParent ) '親子の関係を築く
Call doc.Save( True, False ) '新たな親子関係を確かなものにするため保存する
Call ws.ViewRefresh '表示を更新する
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

サーバー情報:Windows Server 2012 R2Domino9.0.1 FP10 | クライアント情報:Windows10Domino9.0.1 FP10 | 
カテゴリ:アプリ開発 - Notes アプリ | タグ:
  | 質問日時:2020/12/10 11:50:23

回答・コメント

いいね!数

0

NotesDocument の Responses で返答文書(子文書)のコレクションが取得できるので、それを利用するのはどうですか?

文書の返答文書を取得する その3 - のおつ -Notes/Dominoに関すること-
https://guylocke.blogspot.com/2008/09/blog-post_6846.html

回答日時:2020/12/10 12:20:46

いいね!数

0

お世話になります。
早々にコメントありがとうございます。

LotusScript の知識が少ないため、理解できない部分が多いのですが、
アドバイスいただいた内容ですが、子文書取得のみの処理でしょうか?

質問に記載の 処理では、1件ずつであれば、

親文書Aから親文書Bに移行できるのですが、複数文書まとめて処理できず、困っています。
Loopで処理を回せばできそうな気がするのですが、...

以上、よろしくお願いいたします。

回答日時:2020/12/10 15:03:50

いいね!数

0

日が経っているので、解決しているかもしれませんし、やりたいことを私が理解できていないのかもしれませんが、、

Mash555 さんが参考にされたソースは、親文書Aの子文書1(=doc)を選択して、新たに親文書となる文書をダイアログで選んで(親文書B=newParent)、子文書1を親文書Bの親文書に変更する、というコードです。

ykawa さんが参考にと記載してくださったURL先のコードは、選択した文書である親文書A(=doc)を元に、子文書全てを取得(=cdocs)して、Mash555 さんがいう、Loopで子文書(=cdoc)のタイトルを表示している、というコードになります。

ですので、両方を組み合わせればよい、というのがykawaさんのコメントだと思います。

Mash555 さんが参考にされたソースでは、移動させたい子文書を選択して処理開始しています。関連する子文書を全て一度に対応したいのであれば、移動させたい子文書のある親文書を選択して処理開始して、選択した親文書からResponses を使えば全子文書が取得できるので、ループして全子文書を処理すれば、関連する子文書の処理ができます。

参考ソースが何をやっているのかがわかれば、応用して実施したいことに対応できますので、まずは参考ソースをヘルプで紐解くことから始めてはいかがでしょうか。


ykawa さんが参考にと記載してくださったURL先のコードを基本にして、新たな親文書Bを選択する下記の部分を追加して、
Set dc = ws.PickListCollection( 3, False, db.Server, db.FilePath, ws.CurrentView.View.Name, "移動先選択", "新たに親とする文書を選択します。")
Set newParent = dc.GetFirstDocument '新たに親となる文書を取得する

ループ内でタイトルを表示する代わりに、下記で親文書の紐づけ変更をすれば実現できると思います。
Call cdoc.MakeResponse( newParent ) '親子の関係を築く
Call cdoc.Save( True, False ) '新たな親子関係を確かなものにすため保存する

・ループ箇所は「Do While Not ( cdoc Is Nothing )」の部分です。

回答日時:2020/12/25 14:58:00

いいね!数

0

こんにちは。PickListCollection のパラメータで、2つ目の値が False (1文書のみ)となっておりますが、

これを True (複数文書を選択可能)にすることで解決できるのではないでしょうか。

現行)Set dc = ws.PickListCollection( 3, False, db.Server, db.FilePath, ws.CurrentView.View.Name, "移動先選択", "新たに親とする文書を選択します。")

提案)Set dc = ws.PickListCollection( 3, True, db.Server, db.FilePath, ws.CurrentView.View.Name, "移動先選択", "新たに親とする文書を選択します。")

 

 

回答日時:2021/01/06 9:16:26

いいね!数

0

mimimi さん  NomuSunder さん

コメント遅くなり申し訳ございません。
アドバイスありがとうございます。

NomuSunder さんの複数文書選択はやってみましたが、できませんでした。
mimimi さんからアドバイスいただいた ykawa さん のソースと組み合わせて、試してみます。
皆さんありがとうございました。

今後ともよろしくお願いいたします。

 

回答日時:2021/01/07 8:51:57