4 返信 最新の回答 日時: Jan 6, 2010 1:34 AM ユーザー:tomohiroyoshida

    Table Aの顧客IDフィールドに入力した時に、Table Bに同じ顧客IDをもつ新規レコードを作成するには?

    tomohiroyoshida

      タイトル

      Table Aの顧客IDフィールドに入力した時に、Table Bに同じ顧客IDをもつ新規レコードを作成するには?

      フォーラムに投稿

      皆様こんにちは。 いつも大変感謝しておりますが、また一つ皆様のお力をお貸し下さい。 Filemaker pro10 advance, Windows XPの環境です。

      Table Aに顧客ID,購入履歴、購入金額などがあり、Table Bには顧客ID, 本名、生年月日、住所などがあります。 例えば新規レコードを作成する場合、TableAで作成するとき、Table Aの顧客IDフィールドに入力がなされた時に同時にTable Bに同じ顧客IDの新規recordが作られるようにしたいのです。 で、以下の様にしてみましたが、、

       

      Table Aの顧客IDフィールドにonobjectsaveのスクリプトトリガを組み、以下のスクリプトを実行させます。

      If [IsValid(Table B::顧客ID)=0

      レイアウト切り替え[「Table B」(Table B)]

      ブラウズモードに切り替え[]

      新規レコード/検索条件

      Else

      End If                                               

        ええ、全くダメです。 Table Bに新規レコードは出来ますが、全く空のレコードです。 既にTable Aで入力した顧客IDが入力されたTable Bの新規record(顧客IDフィールド以外は空白)を作りたいのです。 皆様お知恵を貸して頂けないでしょうか? 宜しくお願い致します。     

        • 1. Re: Table Aの顧客IDフィールドに入力した時に、Table Bに同じ顧客IDをもつ新規レコードを作成するには?
          tella
            

          ココマロンさんこんにちは。

           

          このスクリプトでは新規レコードが作られるだけで終わってます。

          ファイルメーカーはしっかり言われた事をやってるようですね。

           

           顧客IDを事前に取得しておいて、それを貼付ける作業を追加すれば行けると思います。

          もっと華麗な方法があるかもしれませんが、例えば・・・

           

          If [IsValid(Table B::顧客ID)=0

           

          変数を指定 [$ID;値:Table A::顧客ID]  ←1)これと

           

          レイアウト切り替え[「Table B」(Table B)]

          ブラウズモードに切り替え[]

          新規レコード/検索条件

           

          フィールド設定 [Table B::顧客ID;$ID] ←2)これを追加します。

           

          Else

          End If   

           

           

          1と2を追加すればテーブルAでレコードが作られたときにテーブルBに新規レコードが作られ、

          テーブルAの顧客IDがテーブルBで新規レコードが作られた顧客IDに書き込まれます。

           

          ただ、このスクリプトだけだと、テーブルB側に同じ顧客IDがあったとしてもレコードが作られて

          顧客IDが入力される状態になり、顧客IDが重複する恐れがあります。

           

          スクリプトにテーブルBに同じ顧客IDが無いかどうかの判定も入れたり、

          テーブルA側で顧客IDをユニーク値などの入力値制限をかけて同じ物を最初から入力させない

          とか言うのもいいかもしれないです。

           

          長々と失礼しました。

           

          ご参考までに。 

          • 2. Re: Table Aの顧客IDフィールドに入力した時に、Table Bに同じ顧客IDをもつ新規レコードを作成するには?
            tomohiroyoshida
              

            tellaさま、早速の分かりやすいアドバイスありがとうございました。

            そうです!これです! 確かに変数を設定、、、とフィールド設定、、、を追加すると私の求めているものができました。

            ありがとうございました。

             

            ただ、一つ質問ですが、IsValid関数は初めて使うのですが、手元の本によると、関連レコードが存在するかどうかをcheckし、存在すれば1,存在しなければ0を返す関数となっています。 このため、If[Isvalid(Table B::顧客ID]=0と条件をつけているこのスクリプトでは、Table B側に同じ顧客IDがあることは(重複することは)ないような気がしますが、そうではないのでしょうか?

             

            教えて頂けないでしょうか。 宜しくお願い致します。

             

             

            • 3. Re: Table Aの顧客IDフィールドに入力した時に、Table Bに同じ顧客IDをもつ新規レコードを作成するには?
              tella
                

              ココマロンさんこんにちは。

               

              すいません。私の理解不足だったようです。

              tableAとtableBの顧客IDはリレーションで結ばれていたんですね。

              これであれば確かに同一の顧客IDがあるときはレコードが作られない状態になりますね。

               

              IsValid関数は入力したフィールドとタイプの判定の関数だと思い込んでいた結果です。

               

              http://www.filemaker.co.jp/help/html/func_ref3.33.13.html#344440

               

              新しい使い方を勉強させて頂きました。

               

              ありがとうございます。

               

              因に、蛇足ですが、Count関数を使い、関連レコード数を数えて0だったらレコードを作ると言った方法もあるようですよ。 

              • 4. Re: Table Aの顧客IDフィールドに入力した時に、Table Bに同じ顧客IDをもつ新規レコードを作成するには?
                tomohiroyoshida
                  

                 

                tellaさま、お返事ありがとうございました。 

                また色々と教えて下さい。

                 

                色々アドバイスを頂きながら、自分の目指すdatabaseがゆっくりですが出来ていくので、とてもうれしいです。