2 返信 最新の回答 日時: Nov 14, 2014 5:54 AM ユーザー:kobeyan

    繰り返しフィールドでの相対参照

    kobeyan

      タイトル

      繰り返しフィールドでの相対参照

      フォーラムに投稿

      FMPro 11.0v4  MacOS10.10です。昨日質問させていただいた「up arrowでの加算」の関連です。

      タイトルが適当かどうかわからないのですが、繰り返し数10の繰り返しフィールドが2つ(AとB)あるとして、A1, B1に入力し、次にA2に入力し、タブでB2に移動するときにB1の値が自動入力されることを考えています。その後A3入力時にB3にはB2の値が入ってくるイメージです。10の繰り返しをすべて使うとは限りません。

      また、A1とB1の値が共に一致するレコードがすでにある場合は、既存のレコードから繰り返しフィールドの値をすべてコピーする処理を考えています。

      この2つができるなら、繰り返しフィールドを利用してのデータベースのデザインを決められそうです(ココまでで今年の休暇は終わりそうですが・・・)。

      よろしくお願いいたします。

       

       

       

       

        • 1. Re: 繰り返しフィールドでの相対参照
          Shin

          繰り返しフィールドは、過去の遺産。特別な用途(例えば、計算途中のテンポラリーな使い方等)以外では使われない事をお薦めします。代わりに、他のテーブルを使ったポータルを使いましょう。

          やる事は前と同じで、グローバル変数を2個用意して、OnObjectExitトリガーで値をセット、OnObjectEnterトリガーで2個のフィールドの値をセット、という事で良いと覆いますが。

          • 2. Re: 繰り返しフィールドでの相対参照
            kobeyan

            いつもありがとうございます。

            ポータルの方が望ましいとのことで、改めて入門書を読み直しました。

            やりたいことを説明するのは結構難しいと思っていますが、できるだけ分かりやすく書いてみようと思います。

            ファイルメーカーでやりたいことは、すでにアナログで記録されている大量のデータの入力、整理です。そのため、入力作業時のキー操作を最小限にしたいと思っています。

             

            データの本体は

             

            AB-314-501

            BC-315-501

            AC-314-501

            BC-315-502

            AC-314-502

            AB-315-501

             

            のようなイメージです。6つの順序も変更がおきては困る重要な情報です。

            このほかに、日付、都道府県名などのフィールドがあります。AB-314-501は商品コードのようなもので、おそらく数千種類になり、ほぼユニーク値なのですが、まれに空欄-空欄-101のようなことが起きえるためにユニーク値とは言い切れません。

             

            これを入力するために3つの繰り返しフィールド(最大繰り返し20)を考えていました。

            左のアルファベットは、30種類程度の有限の組み合わせなのでルックアップ。

            中央、右は1行目が決まると、およそ上のようなイメージの数字となることが多い(規則性はそれほど高くありません)ので、2行目以降は上の行の値をコピーし、up arrowで+1ができると入力が楽と判断しました。一行目の値ではなく常に1つ上の行を使いたいので、相対参照の質問をさせていただきました。

             

            また、一行目にAB-314-501を入力した時点で、過去1ヶ月以内に同じ一行目を持つレコードがあった場合には、2行目以降も同じである可能性が十分考えられるので、入力を簡便化するためにまずはコピーしてしまおうと考えました。ただし、違う可能性、7行目以降がある可能性などもあります。日付、都道府県名などは違うので、独立したレコードになります。

             

            およそこんな感じです。

            よろしくお願いいたします。