はじめに
今回は、FileMakerのポータルの標準機能には無い、新規入力行の位置を最初の行に変更するテクニックをご紹介したいと思います!
ポータル1行目を新規入力行にする
ポータル最終行に入力すると関連レコードの追加作成が可能
ご存じのようにリレーションシップグラフで 「このリレーションシップを利用して、このテーブルでのレコードの作成を許可」 にチェックを入れたリレーションシップのポータルをレイアウト上に配置した場合、ポータルの最終行が空白の新規入力行になります。 最終行が新規入力行だと、ポータルの行数が増えてくるとポータルの表示範囲に新規入力行が表示されなくなってしまいます。 その状態でポータルの新規入力をするには最終空白行が見えるまでスクロールして、新規入力行のフィールドをクリックか、最終行のフィールドまで移動するスクリプトを作成する必要があります。 ※下図が通常の新規入力行の状態です。新規入力行は赤枠のポータルの最終行になります。
新規入力行を1行目にするには?
お客様より、このポータルの新規入力行を最終行でなく1行目に変更出来ないかとのご相談がございました。 ※下図の右側ポータルのオレンジ枠部分ポータル1行目を新規入力行にするという事です。 こういった場合、今までは「レコード作成用グローバルフィールドを必要数作成→ポータルの上側に配置→スクリプトでポータルの新規レコードに書き込み→グローバルフィールドの値を消去」という手法で処理していたのですが、もっと簡単に実現できないか挑戦してみました。 目指す動作は、1行目の新規入力行に内容を入力すると、その下へ追加されるというシンプルなものです。 具体的には、下図の右側のオレンジ枠の1行目にデータが入力されて確定されると、1行目は空白に戻り、入力されたレコードが下に移動するという動作をポータルとリレーションシップの機能のみで実現してみます。
FileMakerで簡易的に作成してみる
1.「Utility」テーブルとフィールド作成
・「Utility」 テーブル (ポータル表示用) グローバルフィールド「g_Key(グローバルフィールド)」 ※ここにはログイン時に「001」をセットしています。
2.「データ」テーブルとフィールド作成
「データ」テーブルを作成し、以下のフィールドを作成します。 「作成日時(タイムスタンプ)」(ソート用)
「k_Key(テキストフィールド)」(Utility「g_Key」から関連レコード表示作成用Keyとして使用)
「品名(テキストフィールド)」
「数量(数字フィールド)」
3.リレーションシップ作成
「Utility」レイアウト上にポータル表示を行うために次のリレーションシップを作成します。
4.リレーションシップ「Utility」-「Utility_データ|新規作成用」の設定
「このリレーションシップを利用して、このテーブルでのレコードの作成を許可」にチェックし、作成日時の降順でソートを設定しています。
5.「Utility」レイアウト上に通常ポータル作成
まずはレイアウトの左側、通常ポータルで最終行の入力が可能なポータルを比較のために作ります。 このポータルには、「Utility_データ|新規作成用」を表示させます。 最終行が新規入力行になる通常のポータルです。
6.ポータル1行目を入力行にする
目的とする新規入力行を1行目に持ってくるポータルを作成します。 右側ポータル1つのポータルの様に見えていますが、実は1行目と2行目以降の2つのポータルで出来ています。 1行目(オレンジ枠)も1行表示のみのポータルで、表示しているのは「Utility_データ|新規作成用」です。 2行目(ピンク枠)のポータルも「Utility_データ|新規作成用」を表示しています。 ※ポータル行のメイン、代替の背景表示は奇数行、偶数行を入れ替えています。
ブラウズモードに切り替えてみます。 この段階だとオレンジ枠には最後に作成したポータル行が表示されるだけで、入力行部分がうまくいっていません。
これを入力行にするために、1行目のみ表示のポータル設定で「ポータルのフィルタ」に 「Get ( アクティブポータル行番号 )」 を入力します。
これで、このポータルを新規入力行として使用する事が出来ます。
8.下側のポータルの入力行を表示させない
下側のポータルの最終行の新規入力枠もない方が良いので、ポータル内のフィールドとゴミ箱ボタンに 「次の場合にオブジェクトを隠す」→ IsEmpty ( Utility_データ|新規作成用::K_Key ) と設定します。 この設定で最終行にフィールドが表示されなくなります。
9.分離していた上下のポータルを結合
分離させている上下のポータルを結合して完成です。 ブラウズモードで確認します。 これで最初の行を新規入力行にするという目的の機能が完成しました。
さいごに
今回はご紹介した1行目での新規入力は降順で登録するポータルだと、たいへんスマートに動作します。 ポータルやリレーションシップの設定を利用して入力行の位置を変更しましたが、ぜひFileMaker標準機能として、ポータルのオプションで入力行の位置変更を実装していただいきたいところです。 簡易的なテストファイルを添付いたしますので、ご自由に下記よりダウンロードしてお試しください♪