6 返信 最新の回答 日時: Jul 8, 2009 11:04 PM ユーザー:ユーラムン

    繰り返しフィールドのデータに書き換える方法を教えてください

    ユーラムン

      タイトル

      繰り返しフィールドのデータに書き換える方法を教えてください

      フォーラムに投稿

      ユーラムンといいます。ファイルメーカ9を使っています

      初めて投稿します

       

      1つのフィールドにセミコロンで区切られた複数のデータが入っている非繰り返しフィールドのデータを

      セミコロンで区切られたデータを繰り返しフィールドに移行する方法があったような記憶があります

      ご存じの方お教え下さい

      宜しくお願い致します

        • 1. Re: 繰り返しフィールドのデータに書き換える方法を教えてください
          user6776
            

          こんな感じですかね。おそらくスクリプトで書くか、、、繰り返しの計算フィールドでもうまくやれば出来るかもしれません。

           

          すぐに思いついた方法としてスクリプトでの方法を書きます。 

          testというテーブルに、「セミコロン」「繰り返し」というフィールドがあるという前提でスクリプトを書きました。

           

           

          〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

          変数を設定 [ $データ; 値:Substitute ( test::セミコロン ; ";" ; "¶" ) ] 

          変数を設定 [ $最大データ数; 値:ValueCount ( $データ ) ] 

          変数を設定 [ $cnt; 値:0 ] 

          Loop 

            Exit Loop If [ $cnt > $最大データ数 ] 

            変数を設定 [ $cnt; 値:$cnt + 1 ] 

            フィールド設定 [ test::繰り返し[$cnt]; GetValue ( $データ ; $cnt ) ] 

          End Loop 

          〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

           

           

          スクリプト内で不明な点があればまた書き込んで下さい。  

          • 2. Re: 繰り返しフィールドのデータに書き換える方法を教えてください
            ユーラムン
              

             

             

            〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

            変数を設定 [ $データ; 値:Substitute ( test::セミコロン ; ";" ; "¶" ) ] 

            変数を設定 [ $最大データ数; 値:ValueCount ( $データ ) ] 

            変数を設定 [ $cnt; 値:0 ] 

            Loop 

              Exit Loop If [ $cnt > $最大データ数 ] 

              変数を設定 [ $cnt; 値:$cnt + 1 ] 

              フィールド設定 [ test::繰り返し[$cnt]; GetValue ( $データ ; $cnt ) ] 

            End Loop 

            〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

             

             

            スクリプト内で不明な点があればまた書き込んで下さい。  


            早速にご回答有り難うございます

            フィールド設定[test::繰り返し の後に繰り返しの数を求められ、変数[$cnt]にすることができません

             

            • 3. Re: 繰り返しフィールドのデータに書き換える方法を教えてください
              Hiro
                

              繰り返しフィールドを計算フィールドにした場合の計算式は、

               

              Let(
              一覧=Substitute(Extend(セミコロンテキスト); ";"; "¶");
              GetValue(一覧; Get(計算式繰り返し位置番号))
              )

               

              と定義します。この方が簡単かな。

              なお、繰り返しフィールドの回数指定は、十分余裕を持った回数(1000回でも)で構いません。


              • 4. Re: 繰り返しフィールドのデータに書き換える方法を教えてください
                user6776
                  

                フィールド設定[test::繰り返し の後に繰り返しの数を求められ、

                 

                というと、何かのタイミングでダイアログが出てくるのですか?

                出て来る状況を詳しく教えて下さい。 

                • 5. Re: 繰り返しフィールドのデータに書き換える方法を教えてください
                  ユーラムン
                    

                   

                  Let(
                  一覧=Substitute(Extend(セミコロンテキスト); ";"; "¶");
                  GetValue(一覧; Get(計算式繰り返し位置番号))
                  )

                   

                   


                  有り難うございます

                  教えて頂いた計算式の各々を十分理解できてないのですが

                  繰り返しフィールドに変換することが出来ました

                   


                  • 6. Re: 繰り返しフィールドのデータに書き換える方法を教えてください
                    ユーラムン
                      

                    sago350さんは書きました:

                    フィールド設定[test::繰り返し の後に繰り返しの数を求められ、

                     

                    というと、何かのタイミングでダイアログが出てくるのですか?

                    出て来る状況を詳しく教えて下さい。 


                    前言取り消します。

                    フィールド設定 [ test::繰り返し[$cnt]; GetValue ( $データ ; $cnt ) ]

                    の部分は問題なく入力してスクリプトは作成できました

                    そして、ファイルメーカのスクリプト(S)からスクリプト名をクリックすると1件単位で

                    繰り返しフィールドにデータが埋め込まれていきます

                    数万件ある全件の繰り返しフィールドにデータを転記出来ないのはどこか間違いが

                    あるのではないかと思われます

                    因みにExit Loop If [ $cnt > $最大データ数 ] の $最大データ数 には上記数万件の

                    値を入れればよいのでしょうか

                    件数に関係なく1件単位でしかスクリプトが実行されません

                    お手数掛けて申し訳ありません