カレンダーを一ヶ月、一週間、一日ごとに表示する

今回はQlikView(クリックビュー)で一ヶ月、一週間、一日をリストボックスで選択し、

カレンダーオブジェクトの日付を選択した期間に切り替わる方法をご紹介していきます。

 

 

初めにマスターカレンダーを作成する必要があります。

マスターカレンダーの作成方法は「マスターカレンダー作成」を参考にしてください。

確認のため、入力されたロードスクリプトは以下の画像のようになっています。

スクリプト文も記載しておきます。

 

キャプチ

 

売上:
LOAD 伝票番号,
仕入金額,
仕入先営業所コード,
日付コード,
Date(Date#(日付コード,’YYYYMMDD’),’YYYY/MM/DD’) as 年月日,
製品小分類コード,
売上金額,
売上数量,
顧客コード
FROM
売上明細.csv
(txt, codepage is 932, embedded labels, delimiter is ‘,’, msq);

 

新しいタブを追加して、以下のように入力してください。

※【ロードスクリプトの編集】画面のツールバー【タブ】をクリックし、【タブの追加】ボタンを選択します。

キャプチ2

 

日付期間:
Load
Max(年月日)    AS DateMax,
Min(年月日)    AS DateMin
Resident 売上;

LET varMaxDateFieldValue(‘DateMax’, 1);

LET varMinDateFieldValue(‘DateMin’, 1);

マスタカレンダー:
LOAD
    Year(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’))                   as ,
    Date(Makedate(Year(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’)),
         Month(Date((IterNo())+ DayStart($(varMinDate)-1),’YYYY/MM/DD’))),’YYYY/MM’)    as 年月,
    Month(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’))                  as ,
    Date(Makedate(Year(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’)),
         Month(Date((IterNo())+ DayStart($(varMinDate)-1),’YYYY/MM/DD’)),
    Day(Date((IterNo())+ DayStart($(varMinDate)-1),’YYYY/MM/DD’))),’YYYY/MM/DD’)                         as 年月日,
    Day(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’))                          as ,
    WeekStart(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’))                     as ,
    WeekDay(Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’))                     as 曜日
AutoGenerate (1)
While Date((IterNo()) + DayStart($(varMinDate)-1),’YYYY/MM/DD’) <= Date($(varMaxDate),’YYYY/MM/DD’);

 

【リロード】をします。

スクリプト内にマスターカレンダーのデータが入っているのを確認します。

 

キャプチャ

 

マスターカレンダーを作成していきます。

【シートオブジェクトの追加】から【スライダー】を選択します。

【スタイル】を【カレンダ】にして、【項目】を「年月日」にします。

 

cap25

 

【ドキュメント初期設定を上書きする】にチェックを入れて、【日付】を選択します。

 

cap27

 

【キャプションの表示】にチェックを入れて、「開始日」を入力します。

【OK】ボタンを押します。

 

cap28

 

カレンダーが完成しました。

※ 右側の日付アイコンから日付を選択してください。

 

cap29

 

完成したカレンダーをコピー&ペーストで増やします。

cap30

 

増やしたスライダーの【タイトルテキスト】を「終了日」とします。

 

cap31

 

二つのカレンダーが完成しました。 現在は一つのカレンダーの日付を選択しても、二つのカレンダーの日付が変更されてしまいます。

後ほど、変数を設定してカレンダーの日付を別々で表示できるように変更させていきます。

 

cap32

 

次にリストボックスを作成していきます。 ロードスクリプトを開き、インラインロードを入力していきます。

Mainシートの下にスクリプト文を入力していただいてOKです。

LOAD * INLINE [
期間指定
カスタム
1日前
1週間前
1ヶ月前
];

リロードします。

cap33

 

リストボックスを作成します。

「期間指定」を追加して【OK】を押します。

 

cap34

 

プロパティを開いて、【キャプションの表示】のチェックを外します。

 

cap15

 

リストボックスが完成しました。

 

cap35

 

変数を設定していきます。変数は三つ作成します。

【設定】から【変数一覧】を選択します。

【追加】を押して、変数を以下に設定します。

一つ目は【変数】を「vCalender1」、二つ目は「vCalender2」にします。 二つとも【定義】は設定しなくても大丈夫です。

 

cap37

 

三つ目の変数を追l加します。

【変数名】は「vSelectlist」にして、【定義】は「0」にします。

【OK】を押します。

cap38

 

変数の設定ができました。

次にリストボックスで選択した値を表示するためのオブジェクトを作ります。

【シートオブジェクト】の追加から、【テキストオブジェクト】を追加します。

【テキスト】に「=GetFieldSelections(期間指定)」を追加します。

【レイアウト】を「左揃え」、【透過性】を「100%」にします。

 

キャプチャ42

 

【アクション】で【変数】を「vSelectlist」、【値】を「=if(vSelectlist=0,1,0)」にします。

 

キャプチャ43

 

【レイアウト】で【枠線の幅】を「1pt」にします。

 

cap21

 

【キャプション】タブで【背景色】の色を任意で変更します。

【OK】ボタンを押します。

 

cap20

 

リストボックスで選択した日付がテキストオブジェクトに表示されるようになりました。

 

キャプチャ44

 

変数を使ってリストボックスに【条件付き表示】の設定をしていきます。

リストボックスの【プロパティ】を開きます。

【レイアウト】タブの【条件付き表示】に以下の数式を追加します。【OK】を押します。

=if(vSelectlist=0,1,0)

 

キャプチャ

 

テキストオブジェクトを押すとリストボックスの表示/非表示が切り替わります。

もう一度、【テキストオブジェクト】を追加していきます。 今度はリストボックスが開いているときは「▲」、閉じているときは「▼」が表示されるようにします。

【シートオブジェクトの追加】から、【テキストボックス】を選びます。

【テキスト】に「=IF(vSelectlist=1,’▼’,IF(vSelectlist=0,’▲’))」を入力して、【透過性】を「100%」にします。

 

キャプチャ45

 

【レイアウト】の【枠線の幅】を「1pt」にします。

 

cap24

 

【キャプション】を任意の色に変更します。 【OK】ボタンを押します。

※ 先程作成したテキストボックスのところに移行します。大きさの調整もします。

 

cap25

オブジェクトが全て完成しました。

ここから、トリガーを設定して、選択した期間に日付が表示されていくようにします。

カレンダーの日付を別々で表示させるため、トリガーはリストボックスとカレンダーをリンクさせるために設定します。

 

cap36

 

【ドキュメントプロパティ】から【トリガー】を選択します。

【項目イベント トリガー】の「期間指定」を選んで、【選択時】から【アクションの追加】をします。

 

キャプチャ1

 

【追加】を押して、【変数の設定】を選択します。

 

cap12

 

【変数】を「vSelectlist」にして、【値】は「0」にします。

 

cap39

 

変数をさらに追加していきます。

二個目の変数を追加します。

【変数】は「vCalender1」にして、【値】は以下の数式を入力します。

=IF(期間指定=’カスタム’,vCalender1, IF(期間指定=’1日前’,DayStart(varMaxDate,-1), IF(期間指定=’1週間前’,WeekStart(varMaxDate,-1), IF(期間指定=’1ヶ月前’,MonthStart(varMaxDate,-1)))))

 

cap28

 

三個目の変数を追加します。

【変数】は「vCalender2」にして、【値】は以下の数式を入力します。

=IF(期間指定=’カスタム’,vCalender2, IF(期間指定=’1日前’,DayEnd(varMaxDate,-1), IF(期間指定=’1週間前’,WeekEnd(varMaxDate,-1), IF(期間指定=’1ヶ月前’,MonthEnd(varMaxDate,-1)))))

 

cap27

 

追加したら【OK】ボタンを押します。

トリガーの設定が完了しました。先ほど作成したオブジェクトに、変数を適用させていきます。

「開始日」のプロパティを開いて、【項目】から【変数】に変えます。

【変数】を「vCalender1」にします。

【最小値】は「varMinDate」、【最大値】を「varMaxDate」にします。

 

cap5

 

【OK】ボタンを押します。

今度は期間終了日を変数に適用させていきます。

【変数】は「vCalneder2」に変更して、【最小値】と【最大値】を「varMinDate」、「varMaxDate」にします。

 

 

キャプチャ

 

 

【OK】ボタンを押します。

オブジェクトに変数の適用ができました。

オブジェクトを以下の画像のように配置します。これで完成です。

 

 

cap40 キャプチャ41

 

 

期間を選択するとカレンダーにリストボックスで選択した期間の最大の日付がテキストオブジェクトに表示されるようになります。

 

QlikViewを体験してみませんか?

アイウェイズコンサルティングでは毎月QlikViewの無料ハンズオンセミナーを開催しています。 初めてQlikViewをご利用される方を対象に、QlikViewって何?ってところからQlikViewと他のBIとの違いについてもわかりやすくご説明させて頂いております。