ページビューの合計

2016年10月31日月曜日

【第8回】ノーツアプリ作成~カテゴリビューの作成と、フォームの拡張~

皆様、こんにちは!!

ノーツコンソーシアムオープンセミナーを来週に控え、まだ発表準備ができていない萩原です。
今週はそちらに集中しようかと思ったのですが、来週のほうが厳しいということで、がんばってみます!

さて前回はフォームの体裁を整えましたが、ひとつ簡単に拡張できるフィールド項目の拡張を行ってみたいと思います。

拡張するのは、フィールド【カテゴリ】を選択肢化するというものです。

カテゴリのような項目は、ある程度限られた選択肢として利用されるものであるため、手入力するよりも選択肢として提供することで、ユーザーの利便性を向上することができます。
加えて例えば「カテゴリ」と「カテゴリ」では別のものとして扱われてしまうような事例から回避するためにも有効な手段となります。


それでは早速ですが、【カテゴリ別】というビューを新しく作ってみましょう。

デザイナーのビューを開いて頂き、【新規ビュー】ボタンをクリックします。
ビューの作成ダイアログが開きますので、
・ビュー名に【カテゴリ別|bycategory】と入力します。


新規ビューをいちから作成してもいいのですが、既に【氏名カナ順】というビューがありますので、こちらの設計を元にビューを作成してみます。
【コピーするスタイル】の右にある【コピー元】ボタンをクリックします。

【コピーするスタイル】ダイアログが開きますので、【氏名カナ順】を選択し、【OK】。


さらにビューの作成ダイアログも【OK】してください。



新しく【カテゴリ別】のビューが作成されました。

※デザイナーのビュー一覧で、【氏名かな順ビュー】を選択し、Ctrl+Cでコピーし、同じ位置にCtrl+Vで貼り付け、F2で名前を変更しても同じ結果が得られます。

デザイナーで【カテゴリ別】を開いて頂くと、


【氏名カナ順】と全く同じ設計の状態となっていることがわかります。

今回は新たに1列目に【カテゴリ】を追加します。

1列目選択し、【作成】⇒【列の挿入】をクリックするか、1列目の列タイトルを右クリックし、【列の挿入】をクリックします。

1列目が選択された状態で、下部の【フィールド】から【category】を選択します。


続いて列のプロパティを表示し、
タイトル・・・[空白]
幅・・・1
とし、【展開できる行に三角アイコンを表示する】にチェックします。


続いて【ソート】タブに移動し、
ソート・・・昇順
種類・・・カテゴリ別


を選択します。


ノーツでプレビューすると、


カテゴリ別で内容がソートされていることがわかります。


次に、メインフォームの【category】フィールドの設定を変更します。

メインフォームを開き、【category】フィールドを選択し、プロパティを開きます。
種類を【テキスト】から【ダイアログリスト】に変更します。


続いてひとつ右の「制御」タブを選択し、下記を設定します。
【式で選択肢を設定】
【@DbColumn("":"nocache"; ""; "bycategory"; 1)】



式について、詳しくはノーツのヘルプで【@DbColumn】を見ていただくとして、簡単な意味合いは
@DbColumn(  class  :  cache  ;  server  :  database  ;  view  ;  columnNumber  ) 

cache部分を【nocache】とすることで、キャッシュを使用せずに、現在の選択肢をピックアップします。
viewにカテゴリ別ビュー【bycategory】とし
※ビュー名を"で囲むことに注意
columNumberで抽出する選択肢の列番号である【1】を設定します。

つまりカテゴリ別ビューの1列目の値を取得するということになります。

ノーツでプレビューし、【カテゴリ】フォームの右にある▼をクリックすると、【キーワードの選択】ダイアログが表示され、キーワードとして過去に登録のあるキーワードが表示されます。

このままですと、カテゴリは既存のものしか使用できないため、新規のカテゴリを受け付けるように設定します。

もう一度【category】フィールドの制御タブで、【リストにない値も可】のチェックボックスをONにします。

再度ノーツでプレビューすると、このように下部に「新しいキーワード」が入力できるように変更されました。


今回はひとつ、式(ノーツでは@式[アットマーク式])というものを利用してみましたが、ちょっとした設定で使いやすいデータベースに仕上がることが理解頂けたかと思います。


さて次回は少し息抜きに、ノーツコンソーシアムのオープンセミナーに関して書ければと考えております。

長文にお付き合い、ありがとうございました。

0 件のコメント:

コメントを投稿