11 返信 最新の回答 日時: Mar 15, 2014 1:50 AM ユーザー:Nu-nrg

    ポータル行の削除のループ

    Nu-nrg

      タイトル

      ポータル行の削除のループ

      フォーラムに投稿

           ポータル内の関連レコードについて、
           ポータルを表示しているレイアウト側から、
           ある条件に当てはまるポータル行をじゅんぐり全て削除するループを作っているのですが、
           1つのポータルの行を削除した時点でレコードが選択されず、
           ポータル行の移動ステップの次へとかが効かなくなり、最初の行に戻ってしまいます。

           なぜループかと良いいますと、一定の条件のときには書換え、一定条件の時は削除という感じにしたいがためです。

           関連レコードのレイアウト側に移動して、検索して、対象レコードを削除とかすれば良いのでしょうけど、
           ポータル側レイアウトから操作したいのです。

           小1時間半はまっています。
           なにかうまい手はがあればお願いします。
            

        • 1. Re: ポータル行の削除のループ
          hiro_

               リレーション設定で、親レコードを消去した時にその関連レコードも一括削除するオプション設定が出来ますが、
               この機能を上手く利用することは出来ませんか?

               或は、
               「関連レコードへ移動;関連レコードのみ」で関連テーブルへ移動して、「対象レコードの一括削除」する、とか。

          • 2. Re: ポータル行の削除のループ
            sago350@未来Switch

                 FileMakerのバージョンはいくつですか?

            • 3. Re: ポータル行の削除のループ
              Shin

                   ポータル行を削除する直前(該当行がアクティブになっている間)に、変数にポータル行番号を保存しておきます。

                   削除後、その変数を番号に指定してのポータル行へ移動させれば良いでしょう。ただ、最終行を削除した場合には、分岐させて別処理が必要です。

              • 4. Re: ポータル行の削除のループ
                Nu-nrg

                     sago35さん、すみません、環境ついつい書き忘れました。v12 advancrdです。

                     
                          ポータル行を削除する直前(該当行がアクティブになっている間)に、変数にポータル行番号を保存しておきます。
                     
                           
                     
                          削除後、その変数を番号に指定してのポータル行へ移動させれば良いでしょう。ただ、最終行を削除した場合には、分岐させて別処理が必要です。
                     shinさん、なるほど。
                     Get(ポータル行番号)ですが、ポータル行番号は上から1ですね。
                     ソートとかフィルタリングとかも影響する。
                     再終行(レコード実体のある)の次で変数に加算すると、という分岐ですね、試してみます。
                     ポータル内の行へ移動の計算式は、行番号だけど指定して飛べるのですね。
                • 5. Re: ポータル行の削除のループ
                  Nu-nrg

                       ポータル内のレコード作成は時間が早いですが、
                       レコード削除って件数が多いと結構時間かかるものですね。。。

                  • 6. Re: ポータル行の削除のループ
                    Shin

                         ポータル行で、削除する数が多い時には、適当にフラグを立てて行って、関連レコードへ移動、フラグのみを絞り込み抽出、複数レコード削除、という手順が早いでしょうね。

                         これでしたら、上のややこしい行移動の処理は不要です。

                    • 7. Re: ポータル行の削除のループ
                      Nu-nrg
                           
                                ポータル行で、削除する数が多い時には、適当にフラグを立てて行って、関連レコードへ移動、フラグのみを絞り込み抽出、複数レコード削除、という手順が早いでしょうね。
                           
                                 
                           
                                これでしたら、上のややこしい行移動の処理は不要です。
                           見せ方の問題ですが、これはポータル側からではなく、関連レコードを表示するレイアウト側でしかできませんですよね?
                           悩ましいところです。
                      • 8. Re: ポータル行の削除のループ
                        Shin

                             ポータルの中で作業できますよ。ですから、どちらでも可能です。

                        • 9. Re: ポータル行の削除のループ
                          Nu-nrg
                               
                                    ポータル行で、削除する数が多い時には、適当にフラグを立てて行って、関連レコードへ移動、フラグのみを絞り込み抽出、複数レコード削除、という手順が早いでしょうね。
                               
                                     
                               
                                    これでしたら、上のややこしい行移動の処理は不要です。
                               
                                    ポータルの中で作業できますよ。ですから、どちらでも可能です。
                               ポータル内でフラグをつけるのは、条件式にみあったものを、Get(ポータル行番号で)で「ポータル内の行に移動」し、「フィールド設定」していきますよね。
                               そして、
                               「関連レコードへ移動」、「フラグのみを絞り込み抽出」、「対象レコード削除?」はポータル表示側レイアウトでどうやってやるのでしょう、まったくイメージがわきません。サブスクリプトを走らせるとか、バックグラウンドで関連レコードのオカレンスで操作する、ということでしょうか?
                                
                               ポータル内関連レコードのみで検索できません(関連レコードもヒットしちゃう)し、スクリプトではポータルのフィルタも制御出来ませんよね。
                               「関連レコードに移動」ってレイアウトを切り替えるのではないでしょうか?

                               すみませんが、手順を詳しく教えていただけないでしょうか?
                                
                               PS:過去にポータル操作系の質問ばっかして何度か教えてもらってるのですが、いまいち飲み込めておりません。
                          • 10. Re: ポータル行の削除のループ
                            Shin

                                 最終的にレイアウトを変更しないで処理できれば良いのですよね。

                                 関連レコードが別ファイルでしたら一手間増えるのですが。

                                 同じファイルの別テーブルでしたら、関連レコードへ移動、で新しいウィンドウを表示させ、その中でそれらの処理を行います。終了後、そのウィンドウを閉じておけばいいです。ウィンドウの位置と大きさを工夫すれば、見た目には別ウィンドウで作業していることは見えません。

                            • 11. Re: ポータル行の削除のループ
                              Nu-nrg
                                   
                                        最終的にレイアウトを変更しないで処理できれば良いのですよね。
                                   
                                         
                                   
                                        関連レコードが別ファイルでしたら一手間増えるのですが。
                                   
                                         
                                   
                                        同じファイルの別テーブルでしたら、関連レコードへ移動、で新しいウィンドウを表示させ、その中でそれらの処理を行います。終了後、そのウィンドウを閉じておけばいいです。ウィンドウの位置と大きさを工夫すれば、見た目には別ウィンドウで作業していることは見えません。
                                   すみません、私の説明が悪かったでしょうか。
                                   ポータルを表示しているレイアウト=ポータル側で操作
                                   ではなくて、
                                   関連レコードののレイアウトで操作
                                   ということですよね?
                                   納得しました。