Designer+xobQuery:様々な "今日日付" の取得方法

有効性と有用性の境目。

f:id:xoblos:20180704145737p:plain

入力データから、"今日(システム)日付" を得る手段は、数あります。それこそ――たとえ何処にも明示されていなくとも、xoBlos の内部処理や Excel の関数等で得ることができますので、業務実行時の日付/日時を記録として残したい場合は深く考えず、安心して設計を行ってください。

しかしいずれの手段も、得失が必ず存在します。いくら汎用性を重視しても、慣れていない操作が発生すればそれは手間であると抱かれるでしょう。

ブック名/シート名から得る(冒頭画像①/③)

f:id:xoblos:20180704145747p:plain

こちらは、xoBlos の予約変数です。ブック名とシート名に間違いが無ければ‥‥情報としては確かなものですが、現実的ではありませんね。更に得た内容は日付書式ではないので、抽出キーワード『日時指定』で書式変更はできません。更に生成キーワード『日時指定』では「Custom」が使えないので、生成時点でも書式変更ができません。つまり、書式変更する場合には中間処理を設けなければならないのです。

"日時関連の" 予約変数から得る

前節の方法から出た問題を楽に解決させるには、抽出キーワード『対象セル』に対し、「%Today」或いは「%Now(書式パターン)」を設定することです。抽出制御シートのリファレンスにも注記がありますので、ご確認ください!

Excel 上から得る(冒頭画像②)

f:id:xoblos:20180704145753p:plain

入力データ上に "今日日付" があれば、それも纏めて抽出しておくと楽ですね。これならば抽出キーワード『日時指定』は使えます。しかし資料上に、システム情報がデータレベルで並んでいることは、かなり珍しいでしょう。Excel の関数(冒頭画像例示の「TODAY()」のように)であれば、日付値の保証はありますが‥‥Excel の自動計算が「手動」になっていたり、関数でなく固定値であったりすると、不確かな情報を得る心配があります。

実行者に入力して貰う

f:id:xoblos:20180704145758p:plain

こちらは『業務変数』を定義し、我々が "今日日付" を伝える手段です。業務の実行者が入力を間違えさえしなければ‥‥という問われがあります。しかし前日中に作業が完了せず、どうあっても "今日日付" として処理したくない――等の場合に、日付操作できる面はありますね。

corabo から実行する業務であるならば、変数名を入力する欄のプルダウンから「システム日付を取得する予約変数」を選択することもできます。自動で取得されるので、入力する必要はありませんね。これは将来、Designer 単独でも扱えるようになるかもしれません!

f:id:xoblos:20180704145804p:plain

後は業務ファイル(.xob)の『制御シートの書き換え設定』で実現可能です。抽出キーワード『対象セル』に固定値を指定する場合は、値の先頭に「#」を忘れずに付けましょう。‥‥しかし "書き換え" を行うので、万一制御シートの修正が発生した場合には、書き換え先が変動しないよう注意が必要です。なお『制御シートの書き換え設定』は、「%BOOK%」や「%SHEET%」をあて込むことができません

XML を編集する手順を使う

f:id:xoblos:20180704145810p:plain

こちらは業務ファイル(.xob)内、手順種『抽出データ編集』にて実現可能です。XML to XML なので、中間処理のように 2手順(抽出⇔生成のワンセット)ではなく、1手順節約することができます。抽出キーワード『日時指定』のような加工も可能です。‥‥ただご覧のとおり、制御シートとは別で編集定義用の XML を 1から作成しなければなりません。制御シート以上に、専門性/見易さ/修正のし易さを問う方が多いのではないでしょうか。

xobQuery を使う

f:id:xoblos:20180704145816p:plain

SQLxobQuery)に慣れている方は、一目散にこの手段を選択されることでしょう。しかし上図のように XML の項目に、明示的に項目名を設定しないと大文字は小文字になるので、生成キーワード『入力項目名』の設定時には注意が必要です。前回記事のような手段もあります。また日付書式も、上図クエリの時点で整える必要がありますね。

さて、どの手段が全面的に最良であるか‥‥皆様の中で整いましたでしょうか――。