8 返信 最新の回答 日時: Jun 3, 2015 1:19 AM ユーザー:parc_box

    製造日が今日となる製品だけの出来高を出すには?

    parc_box

      タイトル

      製造日が今日となる製品だけの出来高を出すには?

      フォーラムに投稿

      いつもお世話になってます。
      見当もつかないので、質問させて下さい。

      【現在、つくろうとしてる仕組み】

      【条件 1】
      [ケース製造日 1]から[ケース製造日 12]までを「日付」で管理している。
      →それぞれの日付に対して[ケース在庫 1]から[ケース在庫 12]で管理している。
      →ケース内の袋枚数は[入数 1]から[入数 12]で管理してる。

      【条件 2】
      同じく[バラ製造日 1]から{バラ製造日 12]までを「日付」で管理している。
      →それぞれの日付に対して[バラ在庫 1]から[バラ在庫 12]までで管理している。
      →こちらは袋枚数が「バラ在庫」という指定になってる。

      【作りたいもの】
      「今日の日付の生産袋枚数の合計」を出す[本日の生産高]というフィールドを作成したい。

      関数が使えそうな気がしてますが、果たしてどうすれば良いか見当をつける事が出来ません。
      お手数おかけしますが、ご教示下さいますようお願い致します。

        • 1. Re: 製造日が今日となる製品だけの出来高を出すには?
          sago350@未来Switch

          もう少し、テーブル構成とかフィールドの構成が解らないとなんとも・・・・

          • 2. Re: 製造日が今日となる製品だけの出来高を出すには?
            parc_box

            失礼しました。
            改めて説明させて頂きます。

            現在、テーブルは一つ。[製品情報と在庫数]。
            リレーションを組んでるのは[ログ記録DB]と[製品情報マスター]です。

            ──で、[製品情報と在庫数]テーブル内に、
            前述の[ケース製造日 1]から[ケース製造日 12]フィールド(日付)と、
            それぞれの製造日に対応してる[ケース在庫 1]から[ケース在庫 12]フィールド(数字)、
            それとそれぞれのケース在庫から袋枚数を自動計算させてるフィールド[入数 1]から
            [入数 12]。(これは[本日の生産高]だすのに必要かと考え作成しました)

            又、同一テーブル内に[バラ製造日 1]から[バラ製造日 12]フィールド(日付)。
            それぞれの製造日に対応してる[バラ在庫 1]から[バラ在庫 12]フィールド(数字)。
            こちらは[本日の生産高]に直接利用できる袋枚数が入ります。

            ──そこで、同一テーブル内に[本日の生産高]フィールドを作成し、
            そのフィールド中で関数を使い[ケース製造日 1]~[ケース製造日 12]、及び
            [バラ製造日 1]~[バラ製造日 12]の中から「Get( 日付 )」と同じそれぞれの製造日、
            つまり、勘違いじゃなければ「本日」と合致するそれぞれの製造日の[入数]と
            [バラ在庫]数を全部足してしまいたいと考えてる次第でして……。

            再度まとめながら、改めて「GetSummary」関数かな?とか思い始めてたりします。

            また足りない部分などがありましたら、ご指摘いただけますと幸いです。

            • 3. Re: 製造日が今日となる製品だけの出来高を出すには?
              sago350@未来Switch

              すいません。構造がさっぱり解らないので、データベース定義のフィールドとリレーションのスクリーンショットを貼り付けてもらった方が早いかと思います。

              現在、テーブルは一つ。[製品情報と在庫数]。
              リレーションを組んでるのは[ログ記録DB]と[製品情報マスター]です。

              開始2行目で矛盾が発生してますので、基本的な用語をもう少し調べてからの方がいいかなと思います。
              テーブルは一つなのに、二行目で2つのテーブルでリレーションを組んでいると書いてますし・・・
              (ソーステーブルは一つでテーブルオカレンス名に全然異なる名前を付けているという可能性はありますが)

              • 4. Re: 製造日が今日となる製品だけの出来高を出すには?
                parc_box

                大変失礼しました。
                2行目での矛盾に、自分も恥ずかしさで赤面してしまいました。
                基本的な用語、まだまだ染み付いてないですね;;;;

                フィールド定義の画像とリレーションのスクリーンショットをはらせて頂きます。
                会社のDBですので、2つの塗りつぶしフィールドは「青コード」「黒コード」にさせて頂きます。

                フィールドのスクリーンショットで、途中抜けてるのは[ケース製造日]、[ケース賞味期限]、[ケース在庫数]、[例外内枚数]、[入り数]の繰り返しと、[バラ製造日]、[バラ賞味期限]、[バラ在庫数]の繰り返しとなってます。

                ちょうど昨日から「FileMaker DRILL BOOK」を開いて、テーブルオカレンスの図の部分を先に見てしまい「わかりづらい。最初から読もう」と読み始めた所です。この本、最初から順序良く読むと、とても良いですね><。
                (それまで、5年前後。徒手空拳でやっていけてたのが奇跡)

                • 5. Re: 製造日が今日となる製品だけの出来高を出すには?
                  sago350@未来Switch

                  まだ、やりたいことがよく解らないのですが、
                  「製品情報と在庫」テーブルの1レコードはどういう単位なのでしょうか?
                  「製造日1〜12」までにはどういう単位で日付が入るのでしょうか?

                   

                  • 6. Re: 製造日が今日となる製品だけの出来高を出すには?
                    parc_box

                    【やりたい事】
                    最終的には日々の在庫量の変化を追うことができる「在庫日報」を作成しようと当DBを作成しています。
                    『じゃあ、とりあえず、当日分の在庫の動きを管理出来るDBを作るところから初めて、その次に日報部分の作成を開始しないとカナァ…』と作成を進めてる所です。(ここの順番自体、もしくは考え方自体が間違ってるかもですが…)

                    【1レコードはどういう単位か】
                    1品目につき1レコードという見方をしています。
                    これは製造の都合で「毎日、決まった品目の決まった量を生産していない(100種類近く存在する品目のうちから約10品目ほど、受注に合わせて予定を組んで生産してる)」為です。

                    【製造日 1 ~ 12 までどういう単位で日付が入るか】
                    ここが読んでいて私自信が少々誤解してるかもしれないと感じましたので今回もスクリーンショットを利用させて頂きます。
                    工場で生産された日に、当日の日付を選択します。「ケース賞味期限」、並びに「バラ賞味期限」は、賞味期限の中の数字を元に計算された日付が表示されます。(正確には、"当日も含めて"なので、89日で計算させてます)

                    ※青(ベタ)コード、黒(ベタ)コードは前回と一緒です。又、個人の名前や製品名は赤ベタで塗りつぶさせて頂きました。

                     

                    ──お手数ばかり掛けてしまって申し訳ないです。

                    • 7. Re: 製造日が今日となる製品だけの出来高を出すには?
                      sago350@未来Switch

                      こういうことですかね。

                      Case( 製造日1 = Get( 日付 ) ; 製造数1 ; "" ) + 
                      Case( 製造日2 = Get( 日付 ) ; 製造数2 ; "" ) + 
                      Case( 製造日3 = Get( 日付 ) ; 製造数3 ; "" ) + 
                      Case( 製造日4 = Get( 日付 ) ; 製造数4 ; "" ) + 
                      Case( 製造日5 = Get( 日付 ) ; 製造数5 ; "" )

                      サンプルファイル

                      • 8. Re: 製造日が今日となる製品だけの出来高を出すには?
                        parc_box

                        ありがとうございます。本当になんと言ったらいいか;;。
                        一つの計算式の中でCase関数を繰り返し使えるんですね。

                        「こういうことですかね」とポストしていただいたのを拝見して「あー!!」と声が出てしまいました。

                        早速試してみました。出来ました。

                        Case関数で、複数の条件が成立する場合、先に指定されていた条件が優先されるという但し書きを見かけて、Case関数を使えるというのは念頭にありませんでした。

                        これって、If関数でも同じ事出来るのかなと思い試してみた所、同じ結果が出せました。

                        結局、Case関数とか、If関数における制限って、関数についてくる最初の「()」でだけ気をつける必要があったのですね。

                        繰り返しとなりますが、長々とお付き合いいただき、ありがとうございました。