1 2 前へ 次へ 17 返信 最新の回答 日時: Mar 21, 2017 12:28 AM ユーザー:rin2017

    テーブルデータによるカレンダの書式設定

    rin2017

      初めて投稿します。無作法があればご指摘をお願いします。

      FileMakerも始めたばかりです。過去ログも色々見たんですが解決には至りませんでした。

       

      繰り返しフィールドで42回繰り返し、カレンダーを作成しています。

      祝日、休日、振替休日、土、日は条件付き書式で背景色付できているのですが、テーブルAに年月日フィールドと[休日]または[出勤]の文字が入っているフィールドHがあり、カレンダの日付と年月日フィールドの年月日が一致したらカレンダーの該当日付の背景色を設定(休日のときは祝日などと同じ色に)したいのです。色々やってみたんですがうまく行きません。

      やってみてできなかったことは、

      1.条件付き書式を設定するには、条件を計算式で表すしか方法はないのでしょうか?

      2.テーブルから検索してフィールドHのデータを取り出すスクリプトを計算式にできないでしょうか?

      3.スクリプトから書式設定はできないのでしょうか?

      x.こうすればできる、という方法があれば教えてください。

      どなたか御知恵拝借いただけませんか?  

      環境は、Mac 、FileMakerPro15Advancedです。

        • 1. Re: テーブルデータによるカレンダの書式設定
          MiyukiImaizumi

          繰り返しフィールドは癖があります。

          まず、リレーションを組む時に、キーとなるフィールドはどちらのテーブルのも繰り返しフィールドでないといけません。

          リレーションはレコード対レコードのつながりを表しますから、うまくいかないのではないでしょうか?

           

          4.ルックアップであれば、繰り返しフィールドに合致するレコードから、特定の繰り返し位置に値を持ってこれるので、祝日フラグのようなフィールドを作り、そこを評価対象にして色を変える、みたいなことはできそうですね。

           

          1.ご要望のことを条件付き書式で表すには計算式しかないかと思います。

          2.lookup関数を使えば計算式にできますよ。

          3.スクリプトだと、書式関数を使ってフィールド設定をすればいけそうですが、データの書き換えはこの場合どうでしょう?

          • 2. Re: テーブルデータによるカレンダの書式設定
            user14047

            FilterValues 関数や List 関数を組み合わせればできないことはないですが、今後機能を増やしたいと思った時に応用が難しくなりそうです。

            (添付ファイル参照)

             

            もし、テーブルA のレコードが 1日1レコードで、表示したい期間のレコードが過不足なく(1年分だったら重複しない365レコード)あるのであれば、ポータルを利用した方が楽になるかと思います。

             

            # 1日1レコードとか窮屈な設計は嫌だとか、Google カレンダーみたいにドラッグアンドドロップで予定を入れ替えたいとか、ユーザ体験が贅沢になってきているので、ぐっと敷居は高くなってしまいますが、Web ビューアを使ってGoogle カレンダーのような仕組みを作ってしまう方法もあります。

            • 3. Re: テーブルデータによるカレンダの書式設定
              rin2017

              MiyukiImaizumi  さん

               

               

              回答ありがとうございます。

              サンプルもむつくっていただきこちらも感謝です。

               

               

              1.やはりそうですよね

              2. Lookup でできそうと思ってやりかけたんですが、いまいちよくわからなくて頓挫してしまいました

              3.スクリプトからの書式設定はフォントの色とかしかなくて、やりたい[塗りつぶし]はできないですよね??

               

               

              Lookupを使う方法ですが、サンプルを見たあとでの私の理解は、

               

               

              1.疑問1

              >まず、リレーションを組む時に、キーとなるフィールドはどちらのテーブルのも繰り返しフィールドでないといけません。

              とあるのですが、

              繰り返しフィールド:日付 (10回繰り返し) -- メモ:日付繰り返し (1回繰り返し)

              となっていて、同じ繰り返し回数ではないのですが?

              繰り返しフィールド:日付 (10回繰り返し) -- メモ:日付 (1回繰り返し)

              ではないのですね??

               

               

              2.疑問2

              メモ:日付繰り返し や メモ:メモ繰り返し にLast()が使われている理由はなんですか ?

               

               

              3.疑問3

              繰り返しフィールド:メモ に メモ:メモ繰り返し のデータがコピーされたとして、

              繰り返しフィールドの条件付き書式の条件にはどうセットすればいいですか?

              • 4. Re: テーブルデータによるカレンダの書式設定
                rin2017

                 

                 

                MiyukiImaizumi  さん

                 

                3.疑問3 はuser14047 さんのサンプルを見てわかりました。

                繰り返しフィールド:メモ のデータを見てしょしきをせっていすればいいんですね。

                • 5. Re: テーブルデータによるカレンダの書式設定
                  rin2017

                  user14047 さん

                   

                  user14047 さん

                   

                   

                  ありがとうございます。

                  わかりやすいサンプルもありがとうございます。

                   

                   

                  >もし、テーブルA のレコードが 1日1レコードで、表示したい期間のレコードが過不足なく(1年分だったら重複しない365レコード)あるのであれば、ポータルを利用した方が楽になるかと思います。

                   

                   

                  表示するカレンダは一ヶ月単位で考えています。

                  テーブルAの方には、

                  年月日, [休日]または[出勤]のいずれか

                  の形で、別のスクリプトで登録した年月日の分だけ

                  (一ヶ月分すべてではなく、違う月のものも含まれている)

                  登録されています。

                   

                   

                  こんな場合でも使えますか??

                  • 6. Re: テーブルデータによるカレンダの書式設定
                    user14047

                    添付ファイルにポータルを利用した場合のサンプルもついていますので確認してみてください。

                    FileMaker Pro 15 ヘルプ : レコードの範囲を返すリレーションシップについて

                     

                    ブロック型のマンスリーカレンダーっぽく表示させるために、ポータルの 1 行目から行数 1、2 行目から行数 1...と順番決め打ちの 42 個のポータルをレイアウトに置いています。

                    なので、子レコードが重複していたり足りなかったりすると破綻してしまいます。

                    テーブルA のレコードを複製したり削除したりして、どう表現されるか確認してみてください。

                    表示したい期間のレコードが何を指しているのかが分かるかと思います。

                    • 7. Re: テーブルデータによるカレンダの書式設定
                      MiyukiImaizumi

                      >.スクリプトからの書式設定はフォントの色とかしかなくて、やりたい[塗りつぶし]はできないですよね??

                       

                      そうですね、その場合は四角いオブジェクトに特別な条件の時に隠す設定を、レイアウトで設定してあげれば近いものができそうですよ。

                       

                      1.と2.について

                      Last()関数ではなくて、Extend関数に変更してください。ごめんなさい。久々にやると間違えますね。

                      Extend関数は非繰り返しフィードを繰り返しフィールドと共に使う時に利用する便利な関数です。

                       

                       

                      • 8. Re: テーブルデータによるカレンダの書式設定
                        MiyukiImaizumi

                        はい、その通りです。

                        で、間違ったサンプルのままなのもなんだかなぁなので、少し書き換えたファイルをアップします。

                        でも、user14047さんの方法の方がはるかに融通が利きますね。

                        頑張ってください。

                        • 9. Re: テーブルデータによるカレンダの書式設定
                          rin2017

                          MiyukiImaizumi さん

                           

                          そうでしたか。納得です。

                          • 10. Re: テーブルデータによるカレンダの書式設定
                            rin2017

                            MiyukiImaizumi さん

                             

                            修正版のアツプありがとうございます。

                            納得です。

                             

                            user14047さんのよりこちらが私のやりかけのやつに近いので、

                            参考にさせていただきます。

                            • 11. Re: テーブルデータによるカレンダの書式設定
                              rin2017

                              user14047さん

                               

                              ありがとうございます。

                              勉強になります。

                               

                              MiyukiImaizumi さんのサンプルが私のやりかけのやつに近いので、

                              今回はMiyukiImaizumi さんのサンプルを参考に開発を進めてみます。

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

                              • 12. Re: テーブルデータによるカレンダの書式設定
                                shin

                                ルックアップを使うのでしたら,ルックアップ元のフィールドは繰り返しフィールドにする必要は有りません。

                                また、Extend() を使っても,繰り返し数を1にしていると意味が有りませんよ。

                                 

                                ただし、Lookup() 関数を使う時には,リレーションのキーとなるフィールドは繰り返しでないフィールドで良いのですが,Lookup() で参照するフィールドは,繰り返しにしておき、同じ繰り返し位置にデータが入っている必要があります。

                                Dropbox - community171919.fmp12.zip

                                 

                                これが、繰り返しを使うときのややこしい使いこなしです。

                                 

                                それと、ルックアップを使う時には、リレーション条件が変わった時に、データが上書きされれば良いのですが、上書きするデータが無い場合にデータが残ります。それを削除する様な設定をしておく必要があります。(上のサンプルで設定済み)

                                 

                                ここからは、繰り返しフィールドにつきまとう多分不具合なのですが,繰り返しフィールドの条件付書式の中で Lookup() 関数を使っても、なぜかうまく動作せず,予期しない値が返って来ている様です。

                                • 13. Re: テーブルデータによるカレンダの書式設定
                                  rin2017

                                  shin さん

                                   

                                  ありがとうございます。

                                  サンブルもありがとうございます。

                                   

                                  1.サンブルの動きがイマイチ理解できないので、説明していただけますか?

                                  2.>

                                  ここからは、繰り返しフィールドにつきまとう多分不具合なのですが,繰り返しフィールドの条件付書式の中で Lookup() 関数を使っても、なぜかうまく動作せず,予期しない値が返って来ている様です。

                                  → きちんと動いているようにみえるのですが…

                                   

                                  • 14. Re: テーブルデータによるカレンダの書式設定
                                    sago350@未来Switch

                                    こんな感じもどうかしら。

                                     

                                    • 繰り返しフィールドが二重になっている(色を表示するフィールドとクリック出来るようにするフィールド)
                                    • OnObjectEnterで日付が選択できる
                                    • 予めレコードを作るタイプじゃなくて、ある分だけ表示するタイプ
                                    • 条件付き書式の設定を変える場合は、6つ選択して変更した方が楽

                                     

                                    スクリーンショット 2017-03-21 11.03.17.png

                                    1 2 前へ 次へ