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

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

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

You are not logged in.

Announcement

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


#1 2023-09-19 19:18:12

つつつ
Guest

オートナンバーをランダムにしてプライマルキーにする

プライマルキーをオートナンバーにするとき増加数の設定はできますが
ランダムな数値にはできないようです
例えば7桁のランダムかつユニークな値を、
レコードを作成するたびに自動でつけるにはどのようにさらよいですか?

#2 2023-09-19 20:44:14

Shin
Member

Re: オートナンバーをランダムにしてプライマルキーにする

自動設定で、計算式にすればできますよ。ただし、ユニークにするには常時ユニークという制限をつければいいのですが、エラーを出した後にスクリプトをトリガーできませんので、新規レコードでスクリプトを動かしておくとかしかないです、

Offline

#3 2023-09-19 21:06:33

himadanee
Guest

Re: オートナンバーをランダムにしてプライマルキーにする

既存の値とバッティングしたら乱数を再度生成するようにWhile関数を使えばいいかな。
While (
[
e = 1
] ;
e > 0 ;
[
r = Right ( Random ; 7 ) ;
e = ExecuteSQL ( "
SELECT COUNT(*)
FROM \"テーブル名\"
WHERE \"フィールド名\"=?
" ; "" ; "" ; r )
] ;
r
)

7桁だと偶然バッティングする(2つの端末で同じ計算結果になり、同時にレコードを保存する)確率がそれなりにあるかも?
やっぱり保存時のエラーを処理しないと危険ですかね。

#4 2023-09-19 22:05:36

Shin
Member

Re: オートナンバーをランダムにしてプライマルキーにする

エラー処理 [ オン ]
Loop
    レコード/検索条件確定 [ ダイアログあり: オン ]
    Exit Loop If [ Get ( 最終エラー ) = 0 ]
    フィールドの再設定
End Loop
みたいなスクリプトを、onObjectValidata で起動させておけばいいかな

Offline

#5 2023-09-20 00:30:24

つつつ
Guest

Re: オートナンバーをランダムにしてプライマルキーにする

エラーを考えると、危険をおかしてまでわざわざ実装する機能ではないようですね
一般的にはプライマルキーは外にみせるものではないので
1 2 3と単純に増やしていくものですか?

教科書的にはありえない桁数かつ頭が0だと他のソフトなどで不都合がある場合があるので
1000001とする、などありますが桁を増やしていくほうがいいのでしょうか?

#6 2023-09-20 08:12:13

himadanee
Guest

Re: オートナンバーをランダムにしてプライマルキーにする

見せない前提なら桁数を揃える必要もないし、UUIDでいいのでは。
Clarisはそれが最善と考えてるはずで、テーブル作成時に自動的に主キーフィールドができますよね。
もしかして古いバージョンを使用してますか。

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

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.006 seconds, 9 queries executed - Memory usage: 552.25 KiB (Peak: 579.97 KiB) ]