13 返信 最新の回答 日時: Oct 11, 2016 2:00 AM ユーザー:wadats

    レコードの複製で以前のレコードが複製される

    wadats

      レコードの複製を繰り返していると、前のレコードが複製されます。

       

      レコードの一覧レイアウトで複製したいレコードを検索して、詳細を表示し、複製するスクリプトを作っています。

      しかし、複製の操作を繰り返していると、

      レコードの名前フィールドが”291−2”のレコードを複製した後、”289−1”を複製すると、”291−2”のレコードが複製されます。

      ”290−2”のあと”291−2”を複製しても正常に動作します。

       

      これは、メニューの[レコード]−[レコード複製]で操作しても、同様に以前のレコードが複製されます。

       

      ソートが関係あるような書き込みもあったので、複製の前にソートを解除を追加しても同様です。

       

      よろしくお願いします。

        • 1. Re: レコードの複製で以前のレコードが複製される
          shin

          アクティブになっているレコードが、目的の物とは違っているのでは。

          一度、フォーム表示で動かしてみるとよくわかるかもしれません。

          • 2. Re: レコードの複製で以前のレコードが複製される
            wadats

            レイアウトの上のステータスバーには対象レコード数1、1/3579該当件数(未ソート)になっております。

             

            レイアウトにIDも表示しているのですが、対象のIDです。複製が行われるまで、どのレコードが複製されるかわからない状態です。

            • 3. Re: レコードの複製で以前のレコードが複製される
              shin

              その状態で、メニューからレコード複製を行なってみるとどうなりますか。

              目的のレコードが複製されているならば、スクリプトの問題でしょう。

              どのようなスクリプトになっていますか。

              • 4. Re: レコードの複製で以前のレコードが複製される
                wadats

                メニューでレコード複製でもうまくいきません。

                 

                どのように操作しているかといいますと、

                レコードの一覧のレイアウトで、名前ではない条件で検索して対象を絞り込んで、レコードを選択します。

                詳細のレイアウトで選択レコードを対象レコードにします。スクリプトは、

                     検索モード

                  フィールド設定[ 選択したレコードID ]

                  検索実行

                詳細のレイアウトで、複製を実行します。スクリプトは、

                 レコード/検索条件複製

                 

                です。複製の前に対象レコードのIDを変数に保持していますが、正常です。

                 

                名前フィールドの内容が”290−2”のレコード、”291−2”のレコードは正常に複製され、そのあと”289−1”を複製すると、”291−2”のレコードが複製されます。

                • 5. Re: レコードの複製で以前のレコードが複製される
                  wadats

                  (1)レコードの一覧のレイアウトで、名前ではない条件で検索して対象を絞り込んで、レコードを選択します。

                   これはステータスバーから検索しています。

                  (2)詳細のレイアウトで選択レコードを対象レコードにします。スクリプトは、

                       検索モード

                    フィールド設定[ 選択したレコードID ]

                    検索実行

                  (3)詳細のレイアウトで、複製を実行します。スクリプトは、

                   レコード/検索条件複製

                   

                  上記のうち、(1)の検索せずに、全てを表示の状態だと、正常に複製されました。

                  (1)の検索をすると、検索結果の最後に前回の複製で追加されたレコードがありますが、これが複製されているのでしょうか。

                  • 6. Re: レコードの複製で以前のレコードが複製される
                    shin

                    レコードID には、どのような値が入っていますか。

                    • 7. Re: レコードの複製で以前のレコードが複製される
                      user14047

                      [レコード/検索条件複製] スクリプトステップの前に、[スクリプト一時停止 / 続行] スクリプトステップを挟んで確認してみてください。

                       

                      FileMaker Pro Advanced をお持ちでしたら、スクリプトデバッガで 1 ステップずつ確認していけるので簡単にデバッグ出来ますが、FileMaker Pro ですとスクリプトデバッガが使えないので、[スクリプト一時停止/続行] スクリプトステップや、[カスタムダイアログを表示] スクリプトステップを怪しい箇所に挟んでデバッグしていくのが常道かと思います。

                      • 8. Re: レコードの複製で以前のレコードが複製される
                        wadats

                        [レコード/検索条件複製]の直前までは、複製元のIDが入っていますが、[レコード/検索条件複製]で直前に複製したレコードが複製されます。直前に複製された新しいレコードが複製されます。

                         

                        FileMaker Pro Advancedを使っていますので、1ステップずつ実行していますが、複製を実行するときの複製元がわかりません。

                        • 9. Re: レコードの複製で以前のレコードが複製される
                          wadats

                          名前フィールドのソート順は関係ありますか。

                          レコードを検索していて、ソート順の逆のレコードを複製すると異常になります。

                          しかし、ステータスバーには、未ソートとなっているのですが。

                          • 10. Re: レコードの複製で以前のレコードが複製される
                            user14047

                            [レコード/検索条件複製] スクリプトステップの一つ前のステップで、どのレコードが選択されているのか目視確認できませんか?

                             

                            レコード複製の前に、なぜ検索をするのかわかりませんが、検索を実行するとレコード作成時の順番で一番上のレコードが選択されている状態になっているかと思います。

                            • 11. Re: レコードの複製で以前のレコードが複製される
                              wadats

                              [レコード/検索条件複製]の実行前のレコードのIDを変数に保持していますが、これは複製したいIDが入っています。

                              しかし、[レコード/検索条件複製]を実行すると、以前に追加された新しいレコードの内容で複製されます。

                              • 12. Re: レコードの複製で以前のレコードが複製される
                                user14047

                                こんなスクリプトで確認してみてください。

                                どこがおかしいのか、何をしなくてはいけないのかが分かりやすくなるかと思います。

                                 

                                変数を設定 [ $id ; 値: テーブル名::ID ] 
                                検索モードに切り替え [ 一時停止: オフ ] 
                                フィールド設定 [ テーブル名::ID ; $id ] 
                                検索実行 [] 
                                # どのレコードが複製されるか確認しやすくするためにフォーム表示に
                                変数を設定 [ $LayoutViewState ; 値: Get ( レイアウト表示状態 ) ] 
                                表示方法の切り替え [ フォーム形式 ]
                                カスタムダイアログを表示 [ "このレコードを複製しますよ。" ] 
                                変数を設定 [ $lastMessageChoice ; 値: Get ( 最終メッセージ選択 ) ] 
                                # 1:OK 2:キャンセル
                                If [ $lastMessageChoice = 1 ] 
                                  レコード/検索条件複製
                                Else If [ $lastMessageChoice = 2 ] 
                                  #キャンセルの場合はなにもしない 
                                End If
                                # 表示形式を元に戻す
                                # Get ( レイアウト表示状態 ) の結果 0:フォーム 1:リスト 2:表
                                If [ $LayoutViewState = 1 ] 
                                  表示方法の切り替え [ リスト形式 ]
                                Else If [ $LayoutViewState = 2 ] 
                                  表示方法の切り替え [ 表形式 ]
                                End If
                                
                                
                                • 13. Re: レコードの複製で以前のレコードが複製される
                                  wadats

                                  スクリプトを修正したところ、正常に複製できるようになりました。

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