初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2023-10-12 23:46:34

げーむ
Guest

ランダムな数字7桁を作る方法を教えてください

ランダムな数字7桁のIDを自動生成したいです(注文番号として使います)
かぶることはないと思いますが、ユニークな値にはチェックをいれようと思っています
どのような計算式にしたらよいですか?

ちなみに、視認性的に数字だけにしようと思っていますが
英数字だと視認性がわるいですよね?
小規模なので数字7桁でも十分すぎるユニークな値がとれるとは思ってます

#2 2023-10-13 00:09:05

Shin
Member

Re: ランダムな数字7桁を作る方法を教えてください

注文のテーブルで、1レコード毎に、主キーとして UUID番号 を与えておきます。60桁ほどの数樹ですので、重複することはまずないでしょう。
その頭7桁を、書類上の管理番号として使われれば如何でしょう。十分にランダム数字が得られます。

Offline

#3 2023-10-13 00:17:46

げーむ
Guest

Re: ランダムな数字7桁を作る方法を教えてください

あくまでも注文番号なので、顧客にもわかりやすくしたく、英数字だとごちゃごちゃするし
電話などでも伝えにくいかなあ、と不安には思っています

UUIDですと、英数字ということになるかと思いますが、
数字だけ抜き出す、とかでしょうか?

#4 2023-10-13 01:28:29

鯖缶屋
Member

Re: ランダムな数字7桁を作る方法を教えてください

Get (UUID 番号)というアルファベットを含まない固有IDの値を返すものがあります。
返される表示が非常に長いものになりますが、そのうちの頭7桁を使ったら如何でしょうか?というお話だと思います。

Get (UUID 番号)
https://help.claris.com/ja/pro-help/con … umber.html

Right(Random;7)が簡単で凄い
https://fm-aid.com/bbs2/viewtopic.php?id=14648

Offline

#5 2023-10-13 02:19:33

げーむ
Guest

Re: ランダムな数字7桁を作る方法を教えてください

数字だけもあったのですね
Get (UUID 番号)
https://help.claris.com/ja/pro-help/con … umber.html

Right(Random;7)が簡単で凄い
https://fm-aid.com/bbs2/viewtopic.php?id=14648
なにか違いがあるのでしょうか?

#6 2023-10-13 02:27:44

Shin
Member

Re: ランダムな数字7桁を作る方法を教えてください

別に7桁のランダムな数字を発生させてもいいですが、後の問い合わせに備えて、その数字を記録しておく事になります。レコードの管理(主キー)にUUID番号を使っておくと、別に保存せずとも主キーの頭を検索すれば良くなります。
まあ、どちらでも良いようなものでしょうが。

Offline

#7 2023-10-13 07:26:37

himadanee
Guest

Re: ランダムな数字7桁を作る方法を教えてください

Randomの方は、ちゃんとした乱数が生成されてればどの部分を取り出してもランダムなはずですが、
UUIDの方は仕様上一部は完全なランダムではありません。(UUIDのバージョンを埋め込んでいるため)
例:
40AC91FC-2150-9448-865C-545832FE92C2
036CA48E-E25E-2D45-B55C-ADBB1CCBCE29
AD457C29-038D-1846-B38B-57A53DDADFA3
ハイフンで区切られた4番目の1文字目は、89ABの4種類しか出てきません。(例では8とB)

UUID番号については、FM独自(?)なので、そういった固定部分があるかどうかはわかりませんが、多分ないでしょう。
Get(UUID)のテキスト値だと、UUIDとしての値は128ビットなのに36文字で72バイト=576ビットも使ってしまって無駄が多いということで
Get(UUID数字)が提供されましたが、UUIDと同じ122ビット(6ビットが固定)乱数より重複の心配を減らそうと192ビットに増やしたものと推測されます。

Randomの方は、桁数が固定されてませんので、完全な乱数であれば7文字存在しないことはあり得ます。(.1などの場合。7文字取り出すなら末尾の0を補完して1000000とする必要があります)
しかしその確率は1/10^13ぐらいです。

#8 2023-10-13 08:03:55

himadanee
Guest

Re: ランダムな数字7桁を作る方法を教えてください

間違えて「Get(UUID数字)」と書いてしまいました。
正しくは「Get (UUID 番号)」
スペースが入ってるんですね。英語から翻訳だからでしょうね。

Shinさんご指摘の通り、主キーとしてGet (UUID 番号)のフィールドがあるなら、別途にわざわざ乱数で発生させる必要なさそうですが...

数字フィールドだと先頭一致の検索が遅いなんてことはないですよね?

最新バージョン20.2でレイアウト上に計算結果を表示するのもできるようになりましたね。でもこれで表示するとそこは検索できないか...

#9 2023-10-13 09:34:57

Shin
Member

Re: ランダムな数字7桁を作る方法を教えてください

検証してみたら、UUID番号だと検索難しいですね。
UUID ですと、頭の5〜6文字(20〜24bit)を取り出して10進へ変換したほうがいいようです。検索時は、16進へ変換して文字列で検索が簡単です。

Last edited by Shin (2023-10-13 14:15:32)

Offline

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 567.08 KiB (Peak: 586.48 KiB) ]