8 返信 最新の回答 日時: Nov 26, 2013 2:48 PM ユーザー:zou8uzo

    最新のタイムスタンプを取り出したい

    zou8uzo

      タイトル

      最新のタイムスタンプを取り出したい

      フォーラムに投稿

            

           はじめまして。
            
           テーブルAに100レコードあったとして、その中の最新修正レコードのタイムスタンプを取り出して
           テーブルBに表示したいのですが、方法がわかりません。
           テーブルAに100レコードあり、アイテムフィールドにそれぞれX,Y,Zがあり、テーブルBにX,Y,Zごとに表示させて、
           それぞれの 最新の更新日を表示させることしかできません。
           アイテムごとでなく、全体の最新値を取り出したいです。
            
           タイムスタンプは、フィールドオプションの入力値の自動化で設定しています。
           MacのFileMakerPro12を使っています。
           テーブルAとBはアイテム名でリレーションしてます。
            
           Maxを使ってMiddle等で整形しようと試みましたが、201311999や20131010101010では、ワンパターンの数式で
           整形ができません。
           20131010101010では視認性が悪いし、201311999と20131010101010では本来の意図する比較が成り立ちません。
           Max(GetAsDate(テーブルA::更新日)) や GetAsDate(Max(テーブルA::更新日))ではエラーが出ます。
            
           Maxは数値の最大値のみ取り出せるようですが、Max以外でタイムスタンプを参照してそれの最大値を取り出せる
           方法がありますか?。
           Maxで取り出した数値を、手間かけず楽に視認性の高い日付と時間表示に整形する方法はないですか?。
           エラーだった数式を「(」を「{」等に変えると、数式が有効になるとかもないですよね?。
            
           あるいは考え方を変えてみるしかないですか?。
           FileMakerProのファイルをFinder上で確認すれば、更新日時はわかります。
           それで用が足りないのは、Goと併用して使っていて、どっちが最新のデータか分からなくなるために
           データベース上の日付で確認したいと思ったからです。
           もちろん、FMP12とGoで別々に別々の日に修正して、どっちも別の内容になる可能性もありますが、
           それは無視します。
           その目的のために別な考え方を提案してもらえないですか?。

        • 1. Re: 最新のタイムスタンプを取り出したい
          sago350@未来Switch

               デカルト積のリレーション(Xのリレーション)を使ってMax(タイムスタンプ)とすれば表示されると思います。
               結果が数値になっていることで悩んでいるのではと想像しています。計算式の結果を「タイムスタンプ」にすれば見易いフォーマットで表示されると思います。
               やりたいことと違っていたらすみません。

               (サンプルファイル)
          https://www.dropbox.com/s/klz65quc9qpdetn/Max%E7%AD%89.fmp12
                

          • 2. Re: 最新のタイムスタンプを取り出したい
            zou8uzo

            sago35

                 回答いただきありがとうございました。
                 サンプルファイルを見ながらどこをどうすればいいかが分かりました。
                 式の結果のご指摘ですが、全てテキストでやっていました。それで最初は表示されていたので、タイムスタンプを選ぶという考えがなかったです。

                 デカルト積のリレーションが何かを知りませんでした。
                 今回やり方を教わり、これに関しては分かったのですが理解は出来てないので、今後は応用や活用ができるようになりたいと思いました。

                 サンプルファイルについて分からない点がありました。
                 テーブルが複製されてることの意味と必要性です。複製はどういう場合に使うのでしょうか?。

            • 3. Re: 最新のタイムスタンプを取り出したい
              sago350@未来Switch

                   「A」「B」とテーブルがあるのに、直接リレーションせずに、「A」を複製して「B_A」というテーブルを作っている件ですかね?

              • 4. Re: 最新のタイムスタンプを取り出したい
                zou8uzo

                sago35

                     リレーションの方向を左から右へ固定。
                     の意味がピンときませんでしが、画面を注意深く見直すと、テーブルの絵同士を結ぶ線の根元が微妙に違った描画になってますね。
                     私は今まで相互な関係で方向など関係ないものだと思っていました。
                     軽く調べたところ、単方向と双方向のリレーションシップがあるのですね。
                     単方向には所有者(権なのか?)が片方だけで、そちら側だけがデータの更新をする権利を持つ。という。
                      
                     今回の作業は、アイテムテーブルの更新日を参照し取り出して、最新タイムスタンプテーブルに表示するという内容でした。
                     だから、頭の中ではむしろ右から左への単方向になるのでは?と思うのですが。
                     と思いつつ、自分がサンプルファイルを参考にしたファイルで確認すると、アイテムテーブルから最新タイムスタンプテーブル側に、サンプルファイルと同じように線の絵が同じようになっていました。
                     一旦削除して、それぞれのテーブルの絵の側から引き直したところ、結果は同じで、アイテムテーブルから最新タイムスタンプテーブル側に広がるような線になりました。
                      
                     これもいったいなぜなんだろう?と思いました。
                     テーブルに登録してるアイテムの種類の性質の違い?。
                     でもそれがどう定義されるのか?までは、考えが巡りません。
                      
                     気が向いたときでもいいので、教えてもらえるとありがたいです。
                • 5. Re: 最新のタイムスタンプを取り出したい
                  sago350@未来Switch
                       ■リレーションの方向を左から右へ固定。
                       システムが大きくなってくると「どこからどう参照すればいいんだっけ・・・」と解らなくなってくるので、それを管理するための手法です。(リレーションを参照する方向を1方向にすると解りやすい)
                       ですので、この作り方が正解という訳ではないです。
                       もう少し複雑になった場合のサンプルを添付します。
                        
                       ■単方向と双方向のリレーション
                       リレーションは双方向に参照できます。
                       ですが、参照される側に索引がついていないと参照できませんん。
                       (例)グローバルフィールド、他のテーブルを参照している計算フィールド等
                        
                       ■リレーションの線
                       あまり私は気にしたことは無いんですが、確か1対多とか、多対多とかのリレーションの関係を表していたような。
                       シリアル番号を設定しているフィールドと繋ぐと、シリアル番号が設定されてあるフィールドの方が広がらない線になったはずです。
                  • 6. Re: 最新のタイムスタンプを取り出したい
                    zou8uzo
                         sago35様
                          
                         お返事ありがとうございます。
                         テーブルの複製の件ですが、やっぱりわかりません。
                         このテーブルオカレンスを作ったのは、左から右に流れ固定する。っていう、考え方の整理をするためと同じような理由なのでしょうか?。
                         何かの設計のために必要なんだろうというのは、考えつくのですが、それがなんのためなのかがわかりません。
                         画面単位というのもイメージがつかめません。
                          
                         私の知識と経験不足で理解できないなら、せっかく付き合ってもらってるのにもったいないんで、
                         今回の件に限定して簡単な例でも挙げて教えてもらえないでしょうか?。
                    • 7. Re: 最新のタイムスタンプを取り出したい
                      sago350@未来Switch

                           考え方を整理する的な使い方と言えると思います。
                           テーブルオカレンスが少ないと必要性が出ないのですが、多くなってくると整理が大変になってきますので。
                           それらを大体画面単位のグループで作っていきます。

                           今回の件に限定しての例が、作ったサンプルファイルになるかと思います。

                      • 8. Re: 最新のタイムスタンプを取り出したい
                        zou8uzo
                             sago35様
                              
                             お返事いろいろとありがとうございました。
                              
                             これにて終わりとさせていただきます。