ZOHO Creator には、レコードを作成するたびに、数値フィールド上で連番を作成する機能がないようだ。そこで、Deluge Scripting を利用して、現在保存されてる最大値よりも 1 だけ大きい値が、入力画面に自動で表示するようにした。
方法
対象のフォームにおいて、スクリプトタブを選択する。
SQL が利用できれば、MAX 関数を使って、対象のフィールドにおける最大値を取得し、+ 1 する。しかし、SQL は利用できないようだ。
そこで、対象のレコードを全て走査し、その中で最大値のものを見つけ、+ 1 することにした。
スクリプトビルダー
ZOHO Creator でおもしろいのは、スクリプトを書くための「スクリプトビルダー」というものが用意されているところ。変数の設定ですら、ドラッグ&ドロップとクリックで行うことに驚いた。ブラウザ上で、こんな芸当ができるなんて...(@_@;)
特定のフォームに関連付けられたデータの集合を走査するためには、 for each Record を使う。
Edit ボタンを押すと、スクリプトの文を設定するためのダイアログが表示される。
ここでは、次の手順で設定を行う。
- 走査するデータと関連付けらたフォームを選択
- コレクションから取り出したレコードを保持する変数を定義
- データを抽出するための基準を設定する。
(今回は、全てのレコードを走査するので、抽出のための基準は設定しない。)
これを全部、ダイアログで設定するというのには違和感を覚えたけれど、おもしろい。^^; てゆうか、すごすぎ... 慣れてきたら、スクリプトビルダーではなくて、フリースクリプトの方を利用すればよい。
変数の参照
制御構造や、変数の設定、コレクション (レコードの集合) の走査において、共通に表示されるタブがある。
それぞれの左のタブから、次のものを参照することができる。
- フォームのフィールド
- スクリプト上で定義した変数
- ZOHO における特別な変数 (ex. 現在の時刻)
- スクリプト上で定義したコレクション
- 組み込みの関数
連番を表示するスクリプト
maxID = 0;
for each 変数 in フォーム名
{
if (変数.フィールド > maxID)
{
maxID = 変数.フィールド;
}
}
input.対象フィールド = (maxID + 1);
上記を、フォームのアクション > 追加時 > 読込時 に設定した。
1人だけでアプリケーションを使うなら、これでよい。しかし、複数の人で同時に利用するとなると、データの登録時に、最大値がバッティングしてしまう。そこで、 追加時 > 検証 において、同じコードを実行するようにした。
(どこかに共通に利用するスクリプトを保存できないかなぁ... (?_?))
3コメント:
すぐに忘れる脳みそのためのメモ
kouma様
突然の投稿、失礼いたします。
アドベントネット株式会社
Zoho推進チームの清水と申します。
Zoho Creator に関するブログ記事を拝見して
ご連絡を差し上げました。
本記事、および、下記の記事を、
弊社Zoho HP、または、Zohoブログでご紹介させて頂けないでしょうか?
http://jutememo.blogspot.com/2008/02/zoho-creator.html
http://jutememo.blogspot.com/2008/01/zoho-creator.html
http://jutememo.blogspot.com/2007/07/zoho-creator-excel.html
http://jutememo.blogspot.com/2007/09/zoho-creator.html
Zoho Creator の使い方や活用法を
丁寧にご紹介されているので
Zohoサイトにて他のユーザの方にも
情報を提供させて頂ければ嬉しく思います。
弊社のサイトのアドレスは下記です。
HP:http://zoho.jp/
ブログ:http://blogs.zoho.jp
不躾なお願いで恐縮ですが
ご検討、ご回答頂けますと幸いです。
何卒よろしくお願いいたします。
――――――――――――――――――――
アドベントネット株式会社
Zoho推進チーム 清水
URL : http://www.zoho.jp/
――――――――――――――――――――
Web 上に公開しているものですので、一般的な慣例に従っていただく限り、どうぞご自由にお使いください。
子馬さん
ご回答ありがとうございました。
下記ページに紹介させていただきましたので、ご報告いたします。
http://www.zoho.jp/service/zoho-creator/testimonial.html
今後もZohoサービスをご愛顧よろしくお願いいたします。
アドベントネット
清水
コメントを投稿