ページ

2017年7月4日火曜日

簡単! @関数だけで、一次承認ワークフロー ~その2.1

みなさま、こんにちは!
台風が近づいてきてますね(汗
神戸は夕方の退社時間あたりが再接近のようです。
皆様、くれぐれもお気をつけください。

さて連日の掲載になりますが、昨日カレンダービューについての不具合を記載致しましたが、早速当日夜にIBM Champions for ICS 小野様よりサンプルDBが届きました!!
カレンダービューの列式を工夫することにより、解決されておりましたので、ご紹介させて頂きます。

結論としては、昨日作成したアプリでは、ビューの1列目に開始日を設定し、2列目の期間を複数日分の値を設定し、表現しようとしていました。
頂いたサンプルでは全く視点を変更したものでした。
1列目の日付に開始日と終了日を与え、@Explodeを使用し、複数値をリスト化するというものです。

確かに私個人でも、フォームの日付フィールドを複数値にするという案を考えたことがあったのですが、使用ユーザーの入力が煩雑になるため、採用していませんでした。

今回は列の計算式で複数化されているため、ユーザーの操作は全く変更することなく解決できました。

それでは頂きました情報について、案内させて頂きます。

まずカレンダービューを開きます。

1列目、「開始日」の値を下記式に変更します。


 開始日:式
StartTime := "08:00:00";
EndDate := @If(End=""; Start; End);
@TextToTime(@Explode(@TextToTime(@Text(Start) + "-" + @Text(EndDate)))  + " " + @Text(StartTime))


要はStartとEndをハイフンで繋いで複数化し、@Explodeを使ってリスト化するというものです。

列のプロパティでは、

 列情報タブ 複数値の分離記号:カンマ
 ソートタブ 複数値を別のエントリで表示にチェック


2列目については、

 期間:式
StartTime := @TextToTime("08:00:00");
EndTime := @TextToTime("18:00:00");
(EndTime - StartTime) / 60


とし、常に"600"となるようにしました。

以上で、ビュー上では日付ごとに分解されたリストとして表示されることになります。


実際にビューを見てみましょう。


この例では、7月4日~7日に有給休暇届けを。
10日~12日に遅刻届けを作成したものになります。

もちろんそれぞれ1文書で申請した内容であり、無事カレンダービューにて3日以上のエントリーが表示されるようになりました。


小野様、とても迅速なご提案ありがとうございます!!
この不具合はかなり以前から気になっていたのですが、小野様のおかげで心からスッキリさせて頂きました。
既に社内アプリケーションの全ての改修も完了致しました!

0 件のコメント:

コメントを投稿