みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
プライマルキーをオートナンバーにするとき増加数の設定はできますが
ランダムな数値にはできないようです
例えば7桁のランダムかつユニークな値を、
レコードを作成するたびに自動でつけるにはどのようにさらよいですか?
自動設定で、計算式にすればできますよ。ただし、ユニークにするには常時ユニークという制限をつければいいのですが、エラーを出した後にスクリプトをトリガーできませんので、新規レコードでスクリプトを動かしておくとかしかないです、
Offline
既存の値とバッティングしたら乱数を再度生成するようにWhile関数を使えばいいかな。
While (
[
e = 1
] ;
e > 0 ;
[
r = Right ( Random ; 7 ) ;
e = ExecuteSQL ( "
SELECT COUNT(*)
FROM \"テーブル名\"
WHERE \"フィールド名\"=?
" ; "" ; "" ; r )
] ;
r
)
7桁だと偶然バッティングする(2つの端末で同じ計算結果になり、同時にレコードを保存する)確率がそれなりにあるかも?
やっぱり保存時のエラーを処理しないと危険ですかね。
エラー処理 [ オン ]
Loop
レコード/検索条件確定 [ ダイアログあり: オン ]
Exit Loop If [ Get ( 最終エラー ) = 0 ]
フィールドの再設定
End Loop
みたいなスクリプトを、onObjectValidata で起動させておけばいいかな
Offline
エラーを考えると、危険をおかしてまでわざわざ実装する機能ではないようですね
一般的にはプライマルキーは外にみせるものではないので
1 2 3と単純に増やしていくものですか?
教科書的にはありえない桁数かつ頭が0だと他のソフトなどで不都合がある場合があるので
1000001とする、などありますが桁を増やしていくほうがいいのでしょうか?
見せない前提なら桁数を揃える必要もないし、UUIDでいいのでは。
Clarisはそれが最善と考えてるはずで、テーブル作成時に自動的に主キーフィールドができますよね。
もしかして古いバージョンを使用してますか。
Pages: 1
[ Generated in 0.009 seconds, 10 queries executed - Memory usage: 552.2 KiB (Peak: 563.23 KiB) ]