3 返信 最新の回答 日時: Jan 27, 2016 11:28 PM ユーザー:user14047

    計算フィールドの値を、別のフィールドにコピーする方法

    user25748

      いつもお世話になっております、どうぞよろしくお願い申し上げます。

       

      ご質問

       計算フィールドの値を、値だけを別のフィールドにコピーすることは可能でしょうか。

       

      経緯

       卒業生のデータベースを作成しております。

       

       年度毎になっている複数のexcelファイルを、FMに取り込み、統合を試みています。


       最初のexcelファイルを元に、FMのレイアウトを作成。

      氏名が一つのセルに入っていたので、そのままフィールドを作成。


       順調に、取り込んでいきました。


       しかし、ある年度を境に、氏名が「姓」と「名」が別れていることが判明。

       

       急遽、「姓」と「名」のフィールドを作成し、それぞれに計算式を設定、

      計算式を入れて分割することに成功しました。

       

       困ったことに、計算式の入っているフィールドにはexcelの情報を

      インポートすることが出来ません。

       

       いったんexcelに戻して、再度FMに取り込むことを

      試みたのですが、計算式の入ったフィールドはexcelでは、「0」という

      結果になっていました。

       

       FMで値だけを別フィールドに移して、そこにインポートが出来ないか、

      と考えが至った次第です。

       

       恐れ入りますが、ご教示頂けましたら幸いです。

        • 1. Re: 計算フィールドの値を、別のフィールドにコピーする方法
          user14047

          姓フィールド(計算)、名フィールド(計算)、氏名フィールド(テキスト)があって、姓フィールド、名フィールドにデータを取り込みたいんですよね?

          氏名フィールドは今後使わなくてもいいのであれば、姓フィールド、名フィールドをテキストフィールドにしてしまい、氏名フィールドに値が入ったレコードに対して、フィールド内容の全置換をしたらどうでしょう?

          フィールド内容の全置換は後戻りができないのでバックアップを取った上で慎重に行ってください。

           

          FileMaker Pro ヘルプ : フィールドの内容の置換

          • 2. Re: 計算フィールドの値を、別のフィールドにコピーする方法
            user25748

            user14047 様

             

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

             

             頂いた情報に対し、お伺いしたいことを作成中に、

             

             「excel側で姓名を合わせた、しかも間にスペースを付加したものを、別のセル(統合姓名)に作ることは出来ないか」

              

             と思いつき、実施。上手く作ることが出来ました。


             その後は、FM側の氏名フィールド(今回は、「氏名_漢字_」)にimport。


             計算がなされ、姓名が分離、求めていた形に行き着くことが出来ました。

             

            ScreenClip.png

             

             

             

             ご教示頂いたやり方において、氏名フィールド(以下の図「氏名_漢字_」)を

            全置換する、と言うところが理解できずにおりました。


             確かに、分離させてしまった後は、「氏名_漢字_」フィールドは不要です。

            しかし、姓名各フィールドが計算フィールドであり、その源泉がなくなってしまうと

            姓名各フィールドのデータはなくなってしまいます。


             もしよろしければ、詳しくご教示頂ければ幸いです。

             

            ScreenClip.png

             

             


             なお、計算フィールドに入れた計算式は以下の通りです。


            姓フィールド : Left(氏名_漢字_;Position(氏名_漢字_;" ";1;1) - 1)

            名フィールド : Substitute(氏名_漢字_;Left(氏名_漢字_;Position(氏名_漢字_;" ";1;1) - 1) & " ";"")


             ※ネットから探してきてそのまま入れたところ、実現しました。

              仕組みはよくわかっていません。
            ScreenClip.png

            • 3. Re: 計算フィールドの値を、別のフィールドにコピーする方法
              user14047
              • 元のファイルをバックアップとしてコピーしておきます。
              • 念の為、姓フィールドの計算式と名フィールドの計算式の内容をメモ帳にコピーしておきます。
              • [ファイル] メニュー > [管理] > [データベース...] を選んで、[データベースの管理] - [フィールド] から姓フィールドを選択して、[タイプ:] を [計算] から [テキスト] にして [変更] ボタンをクリックします。
              • 同じように、名フィールドも [タイプ:] を [計算] から [テキスト] にします。
              • [データベースの管理] ダイアログボックスの [OK] ボタンをクリックして変更を保存します。
              • 姓フィールド、名フィールドの値を確認します。

                フィールドの [オプション] - [データの格納] の索引が [必要時に索引を自動設定] にチェックが入っていない状態で [なし] になっているとタイプを計算からテキストに変更した段階でデータが無くなると思っていたのですが、確認したらそのまま計算された値は残っているようなので全置換の作業は不要です。もし、フィールド値が空になっていたら、メモ帳にコピーした計算式で全置換してください。
                • 対象となるレコードを確認して、姓フィールドにカーソルを入れた状態で、[レコード]メニュー > [フィールド内容の全置換...] を選択し、[計算結果で置き換える]のラジオボタンをクリックして、メモ帳にコピーした計算式をペーストし、[OK] ボタンをクリックして、計算式の指定ダイアログボックスを閉じ、[置換] ボタンをクリックします。(やり直しはできません)
                • 同じように、名フィールドも全置換します。

              • [データベースの管理] を開き、氏名フィールドを削除します。

               

              この状態であれば姓も名もテキストフィールドですから、 Excel から姓と名に別れた状態でインポートできるはずです。