>やってみましたがすべてのレコードが同じ番号になってしまいます。
「2番目の全置換を行ったところ、すべてのレコードが同じ番号になった」という意味であると理解しました。
まず、番号を付けるレコードを抽出した後、番号を付ける順番でレコードをソーティングします(番号付けの準備です)。
番号を付けるフィールド(ここでフィールドの名前を「付番フィールド」とします)を選択し、フィールド内容の全置換で初期値に1を指定し、増分を1としてシリアル番号で全置換します。この結果、1,2,3,...という数字がそれぞれのレコードの付番フィールド内に順番に入ります。
行いたいことは、1の位が7進法になることです。つまり、1の位が7で割った余りになればよいことになります。そこで『試しに』シリアル番号が入っている「付番フィールド」を
Mod ( 付番フィールド ; 7 )
という計算式で全置換してみます。この結果、1,2,3,...6,0,1,2,3,...という数字がそれぞれのレコードの付番フィールド内に順番に入ります。
これだけでは「11」を加えていることにならないので10の位の増分として10を加える必要があります。ここで結果として得られる番号(求めたい番号)の10位より上(10位を含む)に注目すると、シリアル番号の10倍になっていることがわかります。つまり、最初にシリアル番号で全置換した後に、それぞれのシリアル番号を7で割った余りと、それぞれのシリアル番号を10倍した値を加えればよいことになります。最初にシリアル番号で全置換した後の計算式:
付番フィールド * 10 + Mod ( 付番フィールド ; 7 )
による全置換はそれを行っています。
なお、当然のことですが、「付番フィールド」はグローバルフィールドではなく「通常の入力フィールド」です。また、全置換では「値」「シリアル番号」および「計算結果」が選択できます。デフォルトで選択されている「値」のままですと「すべてが同じ番号」になってしまいます。
ループを使って増分を11として番号を逐次設定し、1の位が7の場合に0とする方法の方がわかりやすいと存知ますが、工夫がありません。いろいろな方法を考えるのも楽しいかと思います。全置換による方法を使って先頭レコードの番号がたとえば4になる場合(つまり4,15,26,30,...)を考えてみるのもよい頭のトレーニングになります。
お礼
ありがとうございます。 やってみましたがすべてのレコードが同じ番号になってしまいます。 なぜなんでしょう・・・?