みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
フィールドに7桁のランダムな数字が入るようにしています
Middle("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", Round(Random * 61, 0)+1, 1)
&
Middle("1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", Round(Random * 61, 0)+1, 1)
&
を7回繰り返します
確率的には、まずないと思いますが、重複しないように、ユニークな値、にチェックをいれています
重複したときにエラーがでて、フィールドに復帰する、などの選択肢がでますが
この処理ではなく、重複したら再度実行し重複しない値を書き込むにはどうしらたよいでしょうか?
ランダムな数字でななく
ランダムな英数字の間違いでした
おそらく今は入力値の自動化の計算のところでご提示の計算値を入れていることでしょう。
端的に言えばスクリプトステップで回避出来ます。
Offline
最大61の7個の数字を適当に決めます。その数字で、上の文字列からそれぞれ1文字抜き出します。
別に、7個の重複しない素数(2、31を除く)を決めておきます。
2番目の文字列は、最初の数字に各素数を加えた数字(62の剰余)を使います。
例えば
31,5,49,17,54,6,43
に対して、素数を
7,19,23,29,17,41,13
として、2回目は、
38,24,10,46,9,47,56
となります。
同じ文字が出てくるのは、62回で同じ数字になるので、元の数字に別の素数をそれぞれ加えて続けます。2重にすると、3600位生成できます。
Last edited by Shin (2023-10-08 23:11:16)
Offline
スタンドアロンなら計算式内で重複判定してやり直せばいいですが、
共有ファイルだとレコード確定する時点で判定しないと確実とは言えないので、スクリプトで処理するかな。
それか、Get(UUID数字)を使う。
https://help.claris.com/archive/fm19/ja … umber.html
62文字から選ぶなら6ビット弱なので、192ビットあるから32桁まではこの関数1回で計算できるでしょう。
Pages: 1
[ Generated in 0.005 seconds, 10 queries executed - Memory usage: 554.56 KiB (Peak: 564.85 KiB) ]