7 返信 最新の回答 日時: Mar 10, 2017 12:00 AM ユーザー:beginners

    レコード比較から差分を抽出したいのですが

    beginners

      お世話になります。

      FM15 Advancedを使用しています。

       

      2つのテーブルで、ある条件に満たしたレコードのKeyから、他のテーブルにそのキーが存在しないレコードだけを抽出するために

      どのような手順を取ればファイルが出来るのでしょうか?

       

      テーブル:(2つのテーブル)「予実管理TBL」と「測定結果TBL」が存在します。

       

       

      [ 予実管理TBL ]

      key        業務名         課名          作業名 ・・・・

       

      A001     業務A    第一部署     棚卸作業

      A002     業務F     第四部署     棚卸作業

      A003     業務D     第一部署    棚卸作業

      A004     業務B     第一部署     棚卸作業

      A005     業務C     第一部署     棚卸作業

       

       

       

      [ 測定結果TBL ]

      key       測定項目1     測定項目2 ・・・・・・・

       

      A001       OK               NG

      A002       OK               NG

      A004       OK               NG

       

       

      ■抽出条件

       「予実管理TBL」の課名=第一部署のもので、そのkeyが「測定結果TBL」に存在するレコードだけを抽出

       

      【最終的に求めたい結果】(予実管理TBLの検索条件後のレコード と 測定結果TBL の Keyで比較)

      A003     業務D     第一部署    棚卸作業

      A005     業務C     第一部署    棚卸作業

       

       

       

      最終的には、抽出したレコードを画面(レポート)に表示させて印刷しようと考えています。

      どのような手順を取れば、このような該当レコードが作成できるようになるのでしょうか?

       

       

      ご教授頂けますと助かります。

        • 1. Re: レコード比較から差分を抽出したいのですが
          shin

          予実管理TBLと測定結果TBLを key でリレーションします。

          予実管理TBL側で、関連フィールドとして測定項目1、測定項目2 を配置し、検索すれば良いです。

          または、測定結果TBLから予実管理TBLへ関連レコードへ移動し、対象外レコードのみを表示、しても良いでしょう。

          • 2. Re: レコード比較から差分を抽出したいのですが
            beginners

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

             

            リレーションにつきましては分かりました。関連テーブルと言われるものの使い方が少し理解できた気がします。

             

            それから、まだ分からない点がありますので続けて伺います。すみませんが教えてください。

             

            【予実管理TBLのKeyに有って、測定結果TBLのkeyに無いものの、具体的な検索方法(抽出方法)をどのように指定したらよいのか知りたいです。】

             

            >「対象外レコードのみを表示」とはどのような方法でしょうか?

            基本的な方法なのかも知れませんが、まだまだ勉強不足でお手数をお掛けします。

            よろしくお願いします。

            • 3. Re: レコード比較から差分を抽出したいのですが
              user28455

              対象外レコードのみ表示は、無い物は検索出来ないのである物を検索して、その結果に対して対象外を表示する事です。

              • 4. Re: レコード比較から差分を抽出したいのですが
                user19752

                ■抽出条件

                 「予実管理TBL」の課名=第一部署のもので、そのkeyが「測定結果TBL」に存在するレコードだけを抽出

                「存在しない」の間違いですよね。

                 

                測定結果TBLで全レコードを表示

                予実管理TBLへ関連レコードへ移動「対象レコードの関連レコード」

                対象外レコードのみを表示

                ここまでで「そのkeyが「測定結果TBL」に存在しないレコードを抽出」になりますので、

                課名=第一部署のものを「対象レコードの絞り込み」

                すれば完了です。

                が、レコード数によっては「対象レコードの関連レコード」へ移動するのに時間がかかるかもしれません。

                 

                複数条件で検索

                課名=第一部署

                測定結果「*」を除外

                の方がいい?

                 

                「無い物は検索出来ないので」、関連レコード数が0のものを検索するとか、関連レコードがあるものを除外する、とかいう方法になります。

                • 5. Re: レコード比較から差分を抽出したいのですが
                  beginners

                  user19752 さん。ありがとうございます。

                   

                   

                  ご指摘の通り、「存在しない」の間違いでした。失礼いたしました。

                  ■正しい抽出条件は下記の通りでした。

                   「予実管理TBL」の課名=第一部署のもので、そのkeyが「測定結果TBL」に存在しないレコードだけを抽出

                   

                  ご教授頂きました内容について教えてください。

                  > 測定結果TBLで全レコードを表示

                  > 予実管理TBLへ関連レコードへ移動「対象レコードの関連レコード」

                  > 対象外レコードのみを表示

                  > ここまでで「そのkeyが「測定結果TBL」に存在しないレコードを抽出」になりますので、

                  > 課名=第一部署のものを「対象レコードの絞り込み」

                  > すれば完了です。

                  とありましたので試してみましたが、私の設定の何かが違ったのでしょう。結果が正しく表示されませんでした。

                  下記のようにしましたが、問題点が分かりますでしょうか?

                   

                  1、リレーションで「予実管理TBL::key = 測定結果TBL::key」

                  2、スクリプトにて、

                    ・全レコードを表示   ・・・(予実管理TBLが全レコード表示されます)

                    ・関連レコードへ移動  ・・・(このスクリプトを使用するのは初めてなので設定が上手くいっているのか疑問です。)

                        関連レコードの取得元>予実管理TBL と指定しました。

                        レコードの表示に使用するレイアウト> <現在のレイアウト>

                    ・対象外のみを表示

                   

                  以上のスクリプトでデバッガしますと、

                  全レコードの表示は表示されました。 

                  対象外のみを表示が流れますと、該当レコードが0件となります。

                  確かに、「測定結果TBL」に存在しないレコードを抽出したい指定をどこにもしていないので、どこかで指定するのだという事は分かるのですが、

                  どこで指定するのでしょうか?

                   

                  疑問点をまとめました。

                  (1)スクリプトの「関連レコードへ移動」とは何?

                  (2)存在しないレコードを抽出する時の設定はどこで?

                   

                  お手数をお掛けしてすみません。

                  よろしくお願いします。

                   

                  • 6. Re: レコード比較から差分を抽出したいのですが
                    user19752

                    スクリプトの最初は「測定結果TBLで全レコードを表示」なので、測定結果のレイアウトに切り替えるか、そっちのレイアウトから実行します。

                     

                    「関連レコードへ移動」は予実管理TBLが取得元なので、レイアウトもそれのレイアウトになります。

                    オプションのラジオボタンで「現在のレコード」でなく「対象レコード」にするのを忘れない。

                     

                    ここまで実行すると「そのkeyが「測定結果TBL」に存在するレコードを抽出」になります。

                    他に条件を付けてないので、ここで「対象外のみを表示」すれば「~存在しない~」になります。

                     

                    • 7. Re: レコード比較から差分を抽出したいのですが
                      beginners

                      早速のアドバイス感謝しております。

                       

                      流れも良く分かりましたし、結果も思いの通りに表示することができました。

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

                      すごく助かりました