e-learning、オラクル研修、LMS(学習管理システム)のiStudy

e-learning、オラクル研修、LMS(学習管理システム)のiStudy

第138回「実用WEBアプリ 文書管理システム(19)複数ディレクトリ・文書の一括削除、整列処理(2)」

2016.11.10

こんにちは。インストラクターの蓑島です。

今回は前回追加した以下の機能についてソースコードレベルで解説をしたいと思います。

・チェックボックスで選択したディレクトリや文書の一括削除
・同一ディレクトリ内の表示順番の一括更新

ではそれぞれ解説します。

1.チェックボックスで選択したディレクトリや文書の一括削除

前回のスクリーンショットでは、「削除」ボタンが追加されています。このボタンをクリックするとチェックされた行を一括削除します。この部分に相当する機能は、前回掲載したソースコード(DOC_DIR_MAN_EXE)の89行目から、99行目までの処理です。

すなわち、P_BUTTON = '削除' のときの処理です。ここでは、チェックされた行のID番号は、P_SEL_ID配列に格納されていますので、ループ処理で、この配列のID番号で、DOCS表の該当行をDELETEするわけです。

細かい点を説明すると、90行目で、P_SEL_ID.COUNT = 1 のときに、エラー処理をしていますが、これは、チェックボックスなどは、一つもチェックされていなければ、パラメータ値としてNULLが送信されるのではなく、そもそもパラメータの存在そのものが送信されません。すると受信側のPL/SQLプロシージャではエラーとなるので、それを避けるために、ダミーを用意しているのです。すなわち、P_SEL_IDの要素の数(COUNT)が1ということは、1行もチェックされていないことを示しているわけです。そのような目的のダミーを用意している記述は、ソースコード(DOC_SHOW)の62~64行目になります。

2.同一ディレクトリ内の表示順番の一括更新

前回のスクリーンショットで、「表示順番」項目と、表示順番の「更新」ボタンと「整列」ボタンが追加されています。更新ボタンを押せば、「表示順番」を指定どおりの値に更新し、「整列ボタン」を押せば「表示順番」を10,20,30,・・・のように更新します。この部分に相当する機能は、前回掲載したソースコード(DOC_DIR_MAN_EXE)の62行目から72行目までの処理(更新)、および73行目から88行目までの処理(整列)です。

まず更新処理(62行目から72行目)です。
ここの処理は更新ボタンを押したときの処理(P_BUTTON = '更新')です。P_ID配列に更新する行のID番号があり、P_SEQ配列に、更新する表示順番の値があるので、ループ処理で、P_SEQの各値をDOCS表の各行のSEQ列にUPDATEします。P_SEQ.COUNT = 1 の場合をエラーとしていますが、これも上述のダミー処理と同じ事情です。すなわち、0件のときにパラメータそのものが送信されないことを防ぐために、ダミーを用意しており、したがって、COUNTが1のときが実質的な0件エラーとしているものです。

次に整列処理(73行目から88行目)です。
ここの処理は整列ボタンを押したときの処理(P_BUTTON = '整列')です。82~85行目のループ文で、P_ID配列の添え字を2~個数(COUNT)まで移動しながらDOCS表のSEQ列をUPDATEします。添え字1はダミーの要素なので、添え字2からループしているわけです。UPDATEする値は、10から始まって10ずつ加算されるので、結果として、10,20,30,・・・のように更新されます。

では、今回の解説はここまでとなります。

長く続けてきた「実用WEBアプリシリーズ」はいったんここまでとしたいと思います。
これを応用していただき、皆さんご自身のスキルアップ、タスクの効率化などに資することが
できれば幸いに思います。

次回からは、テーマを特に決めず、ちょっとした話題、簡単なツール作成など、
自由なテーマで書いていきたいと思っています。
ご期待ください。

先頭へ戻る