7 返信 最新の回答 日時: Feb 10, 2014 6:31 PM ユーザー:coyayac

    リレーションシップ先のファイルへの明細レコードの書出し

    coyayac

      タイトル

      リレーションシップ先のファイルへの明細レコードの書出し

      フォーラムに投稿

           ファイルメーカーをはじめて2ヶ月位となりまだ勉強中ですが解りだした頃から面白くなってきました。

           受注の入力画面を作っていて、受注ヘッダーファイルと受注明細ファイルを伝票番号(番号自動入力)でリレーションシップ連結し、登録ボタンでファイルに書き出される様にしています。

           画面への受注フィールドはグローバルフィールドを配置して登録ボタンへのスクリプトで「新規レコード ー グローバルフィールドからレコードフィールドへ転送」の手順で書き出だす様にしています。受注ヘッダーは問題なく更新されるのですが受注明細ファイルが書き出されなくて困っています。スクリプトの「新規レコード」で受注ヘッダーファイルのレコードは作成されるのですが受注明細ファイルのレコードが作成されないようです。

           なにか良い方法はありましでしょうか。

           受注明細の項目をポータル上に配置する場合と、ポータルを使用しないで直接フィールドを受注ヘッダーの項目の並びに配置する方法の両方を試しましたがどちらも駄目でした。

        • 1. Re: リレーションシップ先のファイルへの明細レコードの書出し
          Shin

               > 登録ボタンへのスクリプトで「新規レコード ー グローバルフィールドからレコードフィールドへ転送」の手順

               は、必要なのですか。直接レコードへ入力しておくことはできませんか。

               どうしてもその手順が必要ならば、グローバルフィールドからのリレーションを通した明細テーブルは、どのようなリレーションでしょうか。おそらく、単なるフィールド設定ではレコードの移動は難しく、関連レコードへ移動、インポート、キーフィールドの全置換、という手順が必要だと思いますが、初心者のかたには少々ハードルが高いと思います。

          • 2. Re: リレーションシップ先のファイルへの明細レコードの書出し
            coyayac

                 Shinさん ご連絡ありがとうございます。よくお名前は拝見しております(過去のこれまでの色々なアドバイスも参考にさせて頂いています)

                 >グローバルフィールドからのリレーションを通した明細テーブルは、どのようなリレーションでしょうか。

                 受注ヘッダーファイルの受注明細ファイルに、伝票番号というフィールドを作成してそれでリレーションしています。受注ヘッダーの伝票番号のみ、番号の自動入力で自動採番されるようにしてあります。

            >単なるフィールド設定ではレコードの移動は難しく、、、

            これは、受注明細ファイルの登録したい内容を別ファイルへ一旦逃がし、それを読み直して書き直す、のような感じでしょうか。

                 スクリーンショットの上半分がglobalフィールドとなり、下のポータルは受注明細の実フィールドを配置しています。

                 下のポータルの受注明細は、登録ボタン(スクリプト)に関係なく入力直後で登録されても良いと思っています。ただ、受注明細のリレーションキーである伝票番号が登録ボタン押下での確定時の「シリアル番号採番」としてあるの(受注ヘッダーでの指定)で、そのあたりがどのようになるのかが良く分かりません

            • 3. Re: リレーションシップ先のファイルへの明細レコードの書出し
              Shin

                   > 受注ヘッダーファイルの受注明細ファイル

                   はどういう意味でしょうか。また、伝票番号、というシリアル値と、グローバルフィールドの関係は?

                   ファイルの構造を教えてください。また、グローバルフィールドに入力した内容は、どこに移動されるのでしょうか。

                    

                   普通の作り方としては、伝票、というテーブルを作り、伝票番号、伝票固有のデータを設定します。伝票番号を通したリレーションで明細テーブルとつなぎ、その中に明細を入力していきます。グローバルフィールドは全く使いません。

              • 4. Re: リレーションシップ先のファイルへの明細レコードの書出し
                coyayac

                     受注ヘッダーと受注明細、、が分かりにくくてすみません。頂いたように以降は伝票テーブルと明細テーブルとします。

                >普通の作り方としては、伝票、というテーブルを作り、伝票番号、伝票固有のデータを設定します。伝票番号を通したリレーションで明細テーブルとつなぎ、

                そのように作っています(画像にあるような感じです)。伝票ファイルの「伝票番号」は入力値の自動化でシリアル番号が確定時に入るようにしています。入力画面では[確定ボタン]で入力データの確定をしたいと思っているので、「日付」「得意先」のグローバルフィールドを配置して[確定ボタン]でスクリプトを起動してレコードを作成しています。

                1.新規レコード/検索条件  2.フィールド設定[伝票::得意先;伝票::得意先グローバル]

                のようなスクリプトになっています。これで伝票ファイルのレコードは問題なく書かれているのですが、明細テーブルがうまく書かれないので良い方法があればと思っています。

                • 5. Re: リレーションシップ先のファイルへの明細レコードの書出し
                  Shin

                       作業手順は、

                       グローバルフィールドに、日付と得意先 を入力、
                       確定ボタンをクリック
                       伝票テーブル上のレコード(グローバルフィールドでない)で明細を入力、

                       とされているのでしょうか、何か違うような。

                       伝票レコードを確定してから明細を入力する動きでないと、伝票番号が不定になってしまい、明細伝票が特定できなくなりますが。

                        

                  • 6. Re: リレーションシップ先のファイルへの明細レコードの書出し
                    coyayac

                    >伝票レコードを確定してから明細を入力する動きでないと、伝票番号が不定になってしまい、明細伝票が特定できなくなりますが。

                    確かに伝票番号のタイミングが変ですね。上手く動かず悶々としていたのですが質問のやり取りをさせて頂いて少しあたまが整理できました。根本的に作りが良くないようなのでもう少し弄ってみます。ありがとうございます

                    • 7. Re: リレーションシップ先のファイルへの明細レコードの書出し
                      coyayac

                           shinさん 結果のご連絡になるのですが、

                           >「登録ボタンへのスクリプトで「新規レコード ー グローバルフィールドからレコードフィールドへ転送」の手順、、」は、必要なのですか。直接レコードへ入力しておくことはできませんか。

                           の一言を貰ってハタと気がつきもう一度考え直してみた結果、直接レコード入力で行う事にしました。

                           伝票番号フィールドを「シリアル番号での入力値の自動化」としていた為、登録の途中でやめた場合でも伝票番号が繰り上がってしまいその伝票番号が欠番になってしまうので「登録ボタンでの更新」にこだわったのですが、シリアル番号は伝票テーブルと明細テーブルのリレーションを通す為だけの番号項目とする事にして、伝票番号は新たに伝票番号管理テーブルを別途設けて「登録ボタン」で伝票番号を取得&番号の繰上をする様に変更しようと思います。試しに直接入力で作ったなんと簡単な事!だいぶ遠回り(ここだけで3日ぐらいハマってました)しましたがアドバイスとても助かりました。あらためてありがとうございます。