• 締切済み

FileMaker Pro のある関数設定について

FileMakerProで、違うレコードのあるフィールドで関数を使って条件式を完成させる方法を教えていただきたいのです。 例えば、ホテルの宿泊予約受付帳を作ったとします。「宿泊日」フィールドが同じ値の幾つかのレコードは「部屋番号」フィールドが同じ値を入力出来ない様に関数を設定したいのです。もっと具体的に申しますと平成22年2月24日に101号室に予約が入っている場合、別の新規レコードを作成の際、同じ日にちの入力後、「部屋番号」フィールドには101号室、と入力出来ない、またはエラーがかえるようにしたいのです。 どうも違うレコードにまたがるとどのようにすればいいのか分かりません。どうかお教えください。宜しく。

みんなの回答

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.4

あ、必ず日付から入力するのでしたらこれはどうかな。 1.合体2=日付 & "-" & 部屋番号というテキストフィールドを作る。  自動入力にして式はCase( not IsEmpty(部屋番号), 日付 & "-" & 部屋番号) 2.これを照合フィールドとして自己リレーションを設定する。 3.合体2の制限はユニーク値ではなく計算式=Count(自己リレーション::合体2) = 0で制限。

goshi552
質問者

お礼

自己リレーションを使った判定ボタン設定はうまく行きました!これ以上を望むにはやはりFMのバージョンをアップさせないと駄目ですねぇ。今回は大変感謝しております。色々と具体的且つ、分かりやすくご説明頂き、本当にありがとうございました。

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.3

4.1ですか・・古いですね。私の環境では動かない。機能も憶えていない・・ 日付と部屋番号を入力してから、必ずボタンを押して判定するのなら出来そう。 1.日付 & "-" & 部屋番号というテキスト計算フィールドを作る。仮名「合体」 2.これを照合フィールドとして自己リレーションを設定する。 3.判定というスクリプトを作る。内容は  ・フィールドへ移動[]---何も指定しない  ・If[Count(自己リレーション::合体)>1]   ・カスタムダイアログを表示[重複しています]  ・End If 4.このスクリプトをボタンに設定する。 もうすぐver.11も出るらしいです。最近のものは機能が全然違います。 是非購入しましょう。

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.2

>日付を入れた時点での数値が入ってしまうのです。 これは正常な動作です。 >その数値を削除してから 削除の必要はないです。 既存値置き換えにしていますか? 「フィールドに既存の値が存在する場合は置き換えない」のチェックを外します。 自動入力の式は=日付 & "-" & 部屋番号 の方が解りやすいでしょう。 FMのバージョンはいくつですか?

goshi552
質問者

お礼

FMのバージョンは4.1です。古る過ぎるのでしょうか? 既存値、というチェックボックスはありますが置き換えの設定が見当たりません。ユニーク設定にしているのに平気で同じ値が入ってしまっているのが納得行きません。他に原因があるのでしょうか?

  • chieffish
  • ベストアンサー率44% (1149/2554)
回答No.1

簡単なのは、テキストフィールドを1個作って 計算値自動入力にして、式は宿泊日&部屋番号で既存値置き換えとして 入力値の制限でユニーク値にする。

goshi552
質問者

補足

まずもってありがとうございます。ご回答を頂いた時はなるほど!と思ったのですがどうもうまく行きません。症状としては新規レコードを作成し、日付を入れた時点での数値が入ってしまうのです。その後、その数値を削除してから部屋番号を打ち込むと計算された値が確かに入りますが今度はユニークな値の制限がかかっていません。同じ日付の同じ部屋番号の場合、両レコードに同じ値がかえされています。ユニーク設定もしているのですがどんなことが考えられますでしょうか?もしお気づきの点がございましたらお教えください。宜しく。

関連するQ&A