6 返信 最新の回答 日時: Apr 1, 2015 10:38 PM ユーザー:ナカイ

    削除させない制御

    ナカイ

      お世話になります。

       

      ステータスツールバーの「レコード削除」を押した際、あるフィールドの値をみて削除不可としたいのですが、

      何か制御する方法はありませんか?ご存じでしたら教えていただきたいです。

       

      また、「OnRecordCommit」で制御しようと試みましたが、「レコード削除」をした時にこのトリガに用意したスクリプトは動きませんでした。

      「レコード削除」は「OnRecordCommit」の対象ではないのでしょうか。

       

      よろしくおねがいします。

        • 1. Re: 削除させない制御
          user14047

          削除時に commit されるわけではないので、onRecordCommit は発火しません。

          削除時のプレイベントとして動くトリガはないので、カスタムメニューで削除コマンドをオリジナルなものにすげ替えてやる必要があります。

          FileMaker Pro ヘルプ : カスタムメニューの定義 (FileMaker Pro Advanced)

          • 2. Re: 削除させない制御
            ナカイ

            ありがとうございます。やはりできないのですね。

             

            カスタムメニューでやる場合は、削除する方も作り込む必要がありますよね?

            その場合、ポータルで「レコードの削除」をした際の、関連レコードの削除うんぬんも考えなければならないのですが、

            フィールドで判断して、現テーブル削除か関連レコード削除かを制御するしかないですかね?

            何かほかに方法はありますか?条件を満たさない場合は、デフォルトの削除ボタンの動きをするようにできればよいのですが・・

             

            再質問すみません。よろしくおねがいします。

            • 3. Re: 削除させない制御
              user14047

              ポータルレコードの削除を許可する設定で、ポータルレコードの削除(ポータル行を選択した状態で Delete キー)はカスタムメニューも制御出来ないので、ポータルに OnObjectKeystroke のトリガを仕込んで、

               

              If [Code ( Get ( トリガキー入力 ) ) = 8]
              
              

               

              で分岐させるしかないかと思います。

              (自分ならポータルレコードの削除の許可はしないようにして、ポータル行に置いたボタンで削除させるようにしますが…)

               

              関連レコードに関して、リレーションシップの設定がどうなっていて、どういう時に削除を許可/不許可にするのか、いまいち掴めないのですが、そこはソリューションに合わせたオリジナルの削除スクリプトで対応するしかないかと思います。

               

              カスタムメニューの他の解としては、アクセス権で削除を不許可にして、スクリプトを完全アクセス権で実行にチェックを入れたスクリプトを割り当てたボタン経由で削除させるという方法も考えられますね。どちらにしても削除スクリプトはご自身で書いてください。

              • 4. Re: 削除させない制御
                ナカイ

                なるほど。やはりデフォルトの削除機能を使うことはできないのですね。。

                 

                今回は、ポータルにいるかいないかの判断ができればよいので、

                「アクティブポータル番号」を使って制御しようと思います。

                 

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

                • 5. Re: 削除させない制御
                  user14047

                  どうしても、標準の削除機能に拘るのならば、アクセス権を使って、

                  カスタムレコードアクセス権の削除を「制限...」とし、

                  レコードを削除できるタイミングに計算式を入れることで制御はできそうですね。

                  例えば、「削除許可フラグ」フィールドが、1だったら削除できるようにするためには、この計算式に、削除許可フラグ とだけ入れておけばOK

                   

                  ただし、あくまでアカウントに紐付くアクセス権なので、[完全アクセス権]や、カスタムアクセス権が指定できない[データ入力のみ]のアクセス権セットのアカウントや、[閲覧のみアクセス]のアクセス権のアカウントでログインしたユーザには無効です。

                  • 6. Re: 削除させない制御
                    ナカイ

                    アクセス権をカスタムできるんですね!知らなかったです。

                    これならフラグ1の時のみテーブル削除ができそうです。すごい

                     

                    どっちの方向で進めるか検討してみようと思います!

                    ありがとうございます。