4 返信 最新の回答 日時: Mar 26, 2010 12:59 AM ユーザー:celt

    チェックをつけたフィールドには入力を禁止するには

    celt

      タイトル

      チェックをつけたフィールドには入力を禁止するには

      フォーラムに投稿

      社員勤怠管理DBを作っています。

      各社員のひと月ごとの出勤状況を1レコードとし、各レコードにはその社員の1日ごとの情報を入れるために、31回繰り返すフィールド(FieldA)を配置しています。

       

      このFieldAには一般ユーザである各社員が自分の情報を入力します。

       

      FieldAの情報は管理者権限のユーザが随時確認し、対応するFiledB(こちらもFieldAに対応して31回繰り返す)のチェックボックスにチェックを入れると、その後は一般ユーザがFieldAを編集できないようにしたいと考えています。 

       

      月ごとに確認するような運用であれば、レコードごとのアクセス制御で済むのですが、出張がちな上司が在席時に随時出来るところまでの確認をするために、1日ごとにチェックを出来るようにしたいと考えています。 

       

      また、一般ユーザはFileMaker Proを持っているひととそうでないひとがいるので、インスタントWeb共有でも動作するロジックでないといけません。一部のスクリプトはインスタントWeb共有では動作しないものと理解しています。 

       

      似たような手法をWebで探してみているのですが、知識不足なのかどうも上手く行きません。

      良い方法がありましたら、お教えいただけますと助かります。

       

      FileMaker Pro 10 Advanced (MacOS X Snow Leopard) + FileMaker Pro 10 (Windoes 7/Vista/XP) 

        • 1. Re: チェックをつけたフィールドには入力を禁止するには
          moulin
            

          繰り返しのフィールドだとすごく大変なのではないでしょうか

           

          社員一人ずつ1日の出勤状況を1レコードとしてポータルで表示したほうがいいような気がします

          • 2. Re: チェックをつけたフィールドには入力を禁止するには
            celt
              

            moulinさま

            ご教示ありがとうございます。

             

            活用したことがなかったのですが、ポータルってありましたね。

            1日ずつバラバラのレコードとしての入力すると、入力漏れの日があっても気付きにくいかなあと思って、その線では考えていなかったのですが...

            実際に1レコードではないとしても、画面上でひと月分が一画面になっていれば、ユーザに分かりやすいですよね。

            (このDBを使うひとにとってはどっちでもいいですもんね) 

             

            ご教示いただいた方向でも設計をやり直してみます。

            でもこのやり方だと、ユーザ自身が入力のたびにレコードを作るか、管理者があらかじめカレンダーに添ったレコードを用意しておく必要がありそうですね。

             

            ※大変ありがたいのですが、他のやり方がないか、もう少し募集させて下さい。

              

            • 3. Re: チェックをつけたフィールドには入力を禁止するには
              d.o
                

              celtさん

               

              こんにちは

              私もmoulinさんが書いている通り1人1日1レコードがいいと思います。データの正規化という意味でも良いと思いますよ。

              ポータルを使えば1画面に1ヶ月分を表示することも可能でしょう。

               

              1人1日1レコードにしておけば、個人個人の集計も楽でしょうし、曜日ごとの集計とかいろいろ応用が利くと思います。 

               

              入力漏れを防ぐのであれば「条件付き書式」を使って未入力なレコードが表示される行に色を着けても良いかもしれません。

               

              >でもこのやり方だと、ユーザ自身が入力のたびにレコードを作るか、管理者があらかじめカレンダーに添ったレコードを用意しておく必要がありそうですね。

              ユーザーがログインしたときに、当日分のレコードが作られる(すでにレコードが存在するか事前にチェックする)ようにするか、管理者があらかじめレコードを用意しておくか...。

              私だったら事前にレコードを用意するかな。これはどっちでもいいと思います。いずれにしても、スクリプトで組んでしまえば手間はかからないと思います。

               

              • 4. Re: チェックをつけたフィールドには入力を禁止するには
                celt
                  

                D-Oさま

                ご教示ありがとうございます。

                 

                やはり、moulinさんも言われていたように、1人1日1レコードが正道のようですね。

                自分もいまFileMaker Proを学びながら設計しているので、既に動くようになった部分を捨てるのが惜しいような気持ちに負けていたかも知れません。

                 

                > 私だったら事前にレコードを用意するかな。これはどっちでもいいと思います。

                > いずれにしても、スクリプトで組んでしまえば手間はかからないと思います。

                 

                前述した「管理者」のユーザも、あくまでも「勤怠管理の」管理者であってFileMaker Proがわかるひとではないので、自分が月ごとまたは年度ごに必要なレコードをあらかじめセットした状態で、各ユーザに自分の出退勤時刻を入力させる運用にしていこうと思います。

                 

                まともに動くまで少し時間を要すると思いますが、頑張ってみます。

                moulinさん、D-Oさん、どうもありがとうございました。 

                 

                 


                【追記】

                 おかげさまで何とか上手く行くようになりました。

                 

                1)レコードは先に準備しておく形にしました。

                 

                各年度のレコード数は365(または366)日×社員数ですが、私の場合、Excelで1年分の日付のカレンダーを作ってしまいました。「日付」の他に、計算で求めると何かと面倒な「曜日」と、それから弊社は休業日がイレギュラーなので、「休業日」であるか否かがわかる一覧です。これをFileMaker Proに読込んで、1人の社員の1年分のレコードとします。 

                 

                2)ポータルは自己リレーションで。

                 

                ポータルはDB内にふたつのテーブルを定義して、自己リレーションシップを作ることで対応しました。すなわち、各社員の1日ごとのデータに関するテーブル(ポータル内の1行となる情報、および、あとで残業時間や有休取得数などを求めるための各種項目を定義)と、ひと月分のデータをまとめて表示して、入力漏れや間違いのチェックをしたり、各種の集計を行うために必要なテーブルです。

                 

                3)各社員の一日のレコードには「済」という項目を作っておく。

                 

                この項目はチェックボックスとして画面に表示させ、ここにチェックが入っている場合にはレコードが編集できないようにフィールドのカスタムアクセス権限を設定します。すなわち、レコードを編集できる条件に「IsEmpty ( 済 )」(「済」が空の場合)としておきます。

                 

                4)編集権限の制限

                 

                3)により、一般のユーザは「済」にチェックが入っている場合にはその日のレコードの編集が出来なくなっていますが、「済」の項目は管理者だけが編集でき、他のユーザは表示だけするよう、フィールドのカスタムアクセス権限を設定します。これにより、一般のユーザは上司が確認をして「済」をつけた日の情報は変更することが出来ず、自分で「済」を外すことも出来ないことになります。

                 

                5)不要な月を表示させない

                 

                各社員のレコードはあらかじめ1年分用意してあるので、その日に入力する情報にたどり着くのが面倒です。FileMaker Proの知識を持っているユーザは検索するなど出来るでしょうが、うっかり他人のデータを編集しても困ります。

                そこで、レイアウトを社員数分用意します。レイアウトのカスタムアクセス権限により、あるユーザは自分のためのレイアウトしか見られないように制限をします。

                このレイアウトには、現在の日付を元に、その社員の当月分のデータを表示するポータルを配備しています。

                ページ上部に「当月」のほかに「前月」と「来月」のラジオボタンを用意し、来月の有休取得を先に入力したり、先月の入力漏れを月をまたいでも(「済」になるまでは)入力できるようにします。逆に言うと、当月と前後1ヶ月以外のデータは一般社員にはアクセス不可とするのです。 

                 

                6)このほか

                 

                各社員のレコードは1日ごとにばらけているので、アクセス権限があり、FileMaker Proの知識のある管理者は、一般ユーザには公開しないレイアウトにて、各種集計を行うことが出来るようにもしておきます。

                 

                ...という感じに(近いうちに)なりそうです。 

                にceltにより編集されたメッセージにceltにより編集されたメッセージにceltにより編集されたメッセージ