2 返信 最新の回答 日時: Mar 19, 2014 9:10 PM ユーザー:Nu-nrg

    数字フィールド内のシリアル値を変数にすると

    Nu-nrg

      タイトル

      数字フィールド内のシリアル値を変数にすると

      フォーラムに投稿

           ポータルごとレコードコピーという事案ですが、

           親レコードのシリアル値を数字フィールドに設定してあり、接頭辞をつけてhoge1,hoge2,hoge3とカウントしていくようにしています。
           コピー元のシリアル値を変数に代入し、
           関連レコードの数字フィールドの外部キーフィールドにフィールド設定により入力すると、
           英語部分が抜けて、数字だけになってしまいます。

           しかしながら、外部キーでのリレーションは保持され、ポータルに出現します。

           2点疑問があり、
           変数に代入した時点でテキストになってしまい、数字フィールドに代入するとエラーを起こしているのでしょうか?
           また数字フィールドを参照キーにすると、接頭辞の英語部分は無視されて、数字部分だけでリレーションが成立するものなのでしょうか?

        • 1. Re: 数字フィールド内のシリアル値を変数にすると
          Shin

               内部動作の事ですので、あくまで推定になりますが。

               数字フィールドにも、テキストも入力は可能ですが、フィールドを扱うときには、その数字のみが有効になっています。上の hoge1 ですと、1 と認識されているようです。ですから、そのフィールドを評価した値は 1 となります。これがキーになってリレーションされているのでしたら、関連側のテーブルのキーも 1 になります。

          • 2. Re: 数字フィールド内のシリアル値を変数にすると
            Nu-nrg

                 親テーブルの数字フィールドで英語接頭辞をつけたシリアル値を用いたリレーションキーを、変数に代入してスクリプトでフィールド設定により関連テーブルの外部キーフィールドに保存する場合のこのフィールド設定は、
                 数字フィールドの場合は数字のみが評価され、テキストフィールドの場合は値とおりに代入され評価されました。

                 ちなみにテストしてみたら外部キーを保存するフィールド設定を数字フィールドのままで、
                 変数からフィールド設定で入力するときに、GetAsText(変数)であえて関数をかましたところ、英語接頭辞つきシリアル値のまま入力出来き保存され、リレーションも有効でした。
                 この場合、親キーと外部キーはともに数字部分のみ評価されているのかもしれません。

                 親キーが数字フィールド、関連テーブルの外部キーがテキストフィールドのときに、前者が数字だけを評価されて、後者がテキストで評価され、リレーションが成立するのも不思議なもんです。