FileMakerでシステム開発

SE経験者がファイルメーカーを用いた場合、どのような設計、開発を行うのかを検証するブログです。

FileMaker事前検証(8回目) 複数列のプライマリーキーの設定

2020-04-24 13:55:24 | FileMakerの事前検証(複数列のプライマリーキーの設定)
ブログの更新が開いてしまいましたが、重要な事柄である複数の列(フィールド)でプライマリーキーを設定する方法について検証してみたいと思います。
ここでのプライマリーキーは、当然ですがユニークな値として重複を許可しない制約となります。

最重点としてはスクリプトステップにて、レコードを確定した際に、Get ( 最終エラー ) = 504としてエラーイベントを取得させることにあります。

例として以下の2つのテーブルを検証してみます。
1)銀行マスタ
  ・銀行コード (ユニークな値を指定)
  ・銀行名

2)銀行支店マスタ
  ・銀行コード
  ・支店コード
  ・主キー   (ユニークな値を指定)
  ・支店名


1.テーブル定義での「入力値の自動化」を設定

上記の銀行支店マスタの列である「主キー」に対して、例えば「計算値」に以下のような式を設定する方法があります。
 「計算値」 銀行コード & ”,” & 支店コード

一見、この方法でもユニークな値としてレコードが挿入された際、重複エラーが発生しますが、タイミングがそのレコードから、カーソルが離れた時にしか発生しません。
以下のようなスクリプトステップで、エラーを取得しようとしてもできません。


2.解決策(代替案)

FileMakerの仕様は、「新規レコードを挿入した後に、レイアウトに表示されている項目(銀行コード、支店コード)をフィールドに挿入した後に、レコード確定を行う。」
ここでのレイアウトに表示されている項目が「ユニークな値」として設定されているならば、重複エラーを取得することができます。
ゆえに、「ユニークな値」として設定している列である「主キー」に対しても以下を行うことで重複エラーを取得することができます。
 ①テーブル定義
   ・「入力値の自動化」で、計算式の設定は行わない。
   ・テキストとして、「ユニークな値」を設定する。
 ②レイアウトに設定しておく。
  フィールド入力
   □ ブラウズモード :チェックを外しておきます。(オブジェクトを隠しておいても良いです。)
③計算結果を挿入する。(以下参照)



3.画面遷移

 3.1.銀行支店マスタ保守が起動された状態です。



3.2.新規作成ボタンを押下し、銀行コードと支店コードの入力を行います。
  銀行コード(ドロップダウンリスト)を指定した結果、既に登録されている支店が表示されます。
  新規作成を取りやめ、登録済の支店を修正するため、明細のボタンを押下します。

3.3.他の端末で編集中の場合、メッセージを表示し処理継続を不可としています。



補足

一般のRDBMSでは、複数の指定した列に対し、CONSTRAINT UNIQUEとして一意制約を作成することができます。
今回は、「入力値の自動化」で計算式を設定した列は、スクリプトステップでは使えない(または使い難い)ことを書きました。(他の方法で対応することもできると思います。)

計算式で設定した列に対する評価(値の編集、空欄不可、重複の判定等々のタイミングなど)の仕様がFileMakerのある意味での難しさになっているのかもしれません。(因みに、私はフィールド毎に設定するスクリプトトリガーをほとんど使用しません。)

Claris社の今後に期待したいところです。


以上です。

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« FileMakerでの構築(2回目)... | トップ | FileMakerでの構築(3回目)... »
最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

FileMakerの事前検証(複数列のプライマリーキーの設定)」カテゴリの最新記事