3 返信 最新の回答 日時: Apr 3, 2010 9:32 PM ユーザー:TailCapeT

    GET(日付)の使い方で質問

    nakajin

      タイトル

      GET(日付)の使い方で質問

      フォーラムに投稿

      WIN版8.5で販売・仕入管理のデータベースを作成しております。

       

      現在レコードは1テーブル15000件

      テーブルは100程度

      作成項目は各テーブル400程度(内:計算項目は130くらい) 

      リレーショナルは150組

      ファイルは40ギガくらい

       

      CLIENTは8で東京成田大阪とVPNで使っております。

       

      それほど大きなデータベースだとは思いませんが最近困ったことがおきました。

      いろいろな計算項目でGET(日付)を使っているのですが、今日の日付を表示してくれないことがあります。

       

      その結果、日付を使った様々な問題が出てきて困っています。

      皆様GET(日付)って、日にちが代われば自動的に代わるものではないのでしょうか?

       

      私はそう信じて様々な計算項目で使いまくっておりました。

      最近計算項目を更にブラッシュアップしようと、少し内部をいじくったら問題発生です。

       

       

        • 1. Re: GET(日付)の使い方で質問
          aqula
             Get ( 日付 )はレコード作成時(計算時)の日付だと理解しています。

          常に現在に日付にしたい場合には「非保存」にします。索引オプションの「計算結果を保存せず必要時に再計算する」にチェックを入れます。

          「非保存」の場合、日付が変わって最初にファイルを開く時に再計算が始まります。
          ※ファイルが開いた状態で日付が変わるとレコード確定時に再計算
          レコードが多いのに必要以上に「非保存」にしていると待ち時間が長くなります。


          • 2. Re: GET(日付)の使い方で質問
            aqula
               Get ( 日付 )はOSの日付を取得しているので、Get ( 日付 )を含んだ計算式の動作確認は、OSの日付を変更して行います。
            • 3. Re: GET(日付)の使い方で質問
              TailCapeT
                

              こんにちは、以前同じようなことで、トラブルが有り苦労した覚えが有ります。

               

              私の理解をお話します、この理解で今のところトラブルに有っていないのですが、あくまで主観的な私の理解です、

              FileMakerオフィシャルなものでは有りませんし、言葉の使い方が正式でないと思います。

              その点ご了承ください。

               

              ーーーーーー 

               

              Get関数は、受動的な挙動をします。

              聞かれたら答えを返しますが、自分から修正は行いません。 

               

              なので、スクリプトやダイヤログなど、表示する時に毎回「今はどう?」と聞く形の動作をさせると、

              正しい答えが帰ってきます。

               

              問題が起こるのはデータを保存する形での計算フィールドです。

              非保存にしていない計算フィールドは、敢えて再計算をさせない限りはデータを変更しないのです。

              再計算タイミングは主に、スクリプトなどによる指示と、計算式に含まれているフィールドの値変更です。

               

              表示をさせたいだけなら、その計算フィールドを非保存にすれば解決します。 

              但し、非保存の計算フィールドはリレーションの参照先として使えませんし、検索も時間がかかります。

               

              「あれをすれば、これがダメで」が多い部分でとても苦労した覚えが有ります。

              解決方法はシチュエーションによって多々です。

              (ポータル諦めてリスト形式にする、全置換でキーを入れる等)

               

              昔有ったToday関数が、この用途では一番なのですが、Today関数もそれはそれでトラブルメーカーでしたので、

              無くなったのも仕方が無いなとも思います。