ファイルメーカーの開発のヒント(初心者向け編)「ポータルを使ってみよう!(挿入編)」

2012年03月22日 11:12 PM

ファイルメーカーのTips


前回の掲載よりずいぶんと期間が空いてしまいました。 大変申し訳ありません・・。

さて、今回は「ポータルの挿入」編です。

明細の入力モレがあったから 「3行目と4行目の間の行に入力したい!」 などはよくあることですね。 しかし、普通にポータルにデータを追加入力していくと、ソート順を設定していない場合は 最後の行に追加されてしまいます。

せっかく頑張ってファイルメーカーでシステムを作って、がんばってポータルも配置したのに、 挿入ができないとちょっと不便ですよね。

ここでは、スクリプトを使って挿入する方法をご紹介します。

考え方としては、 『レコードに行番号を持たせて』 『行番号の昇順ソートをして並び替えを行う』  ことで 「挿入したように見せる」ということになります。

 

では、具体的に作っていきましょう!

 

1. フィールド定義で 見積明細テーブルに「行番号」を数字タイプで作成します。 オプションの「入力値の自動化」で計算値を選択し、「Get(レコード番号)」を入力します。

こうすると、ポータルに入力した際に、1行目だったら1を、5行目だったら5を取得します。

 

2. レイアウトモードでポータル設定を開き 「行番号の昇順ソート」に設定します。

↓

 

3. ポータルにボタンを配置します。 (※図の中には次回予定の削除用ボタンも配置しています。)

 

4. ボタンに設定するスクリプトを作成しましょう。 今回は「クリックした行の上の行」に挿入する仕組みにします。 流れは下記のようになります。

・その行が最終行だった場合は、「摘要」フィールドへ移動 ↓ ・挿入するか、確認のメッセージを表示(これは省略してもいいです。) ↓ ・OKなら次へ、キャンセルなら中止 ↓ ・見積ID(見積明細とのリレーションキーです)、クリックした行の行番号を変数に取得 ↓ ・見積明細の関連レコードへ移動(関連レコードのみを表示) ↓ ・見積明細のレコードを作成 見積IDに「変数で持たせた見積ID」の値を代入 行番号に「変数で持たせた行番-0.5」の値を代入 (マイナスする値は、1未満なら0.5以外の値でもOKです) ↓ ・行番号でソート ここで、追加したレコードは、挿入したい位置に移動します。 ↓ ・行番号を1から始まるカスタム値で全置換 追加した行は小数点が入った状態なので、全明細を正しい行番号に修正します ↓ ・見積書のレイアウトへ移動

 

では、実際のスクリプトを見てみましょう。

 

いかがでしょうか?

ちなみに「行番号を1から始まるカスタム値で全置換」はこんな設定です。

 

5. ボタンにスクリプトを設定して終了です。

 

これを応用して、

・クリックした下の行に挿入する ・クリックした行をコピーする

などもできますね。

 

また、見積書のレイアウトに戻った後に、「挿入した行にカーソルが移動」していると便利ですね。 「ポータル行へ移動」を使うと簡単にできますので、ぜひ試してみてください。