みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
お世話になっております。
この度FileMaker14で採番値の実装にてこずっておりましてお知恵を貸していただければと思っております。
現在値:A999
次の値:B001
現在値:Z999
次の値:ZA01
上記のような採番を行っていきたいのですが
どのような実装方法が考えられますでしょうか。
よろしくお願いします。
> 現在値:Z999
> 次の値:ZA01
次の値は
ZA001
では無いのですか?
また、
ZZ
の次は?
Offline
> 現在値:Z999
> 次の値:ZA01
次の値は
ZA001
では無いのですか?また、
ZZ
の次は?
次の値はZA001ではなく桁の都合上ZA01になります。
ZZのつぎはZZZ1になります。
> ZZのつぎはZZZ1になります。
ZZA1
の間違いですよね。
採番順に1からシリアル番号を付け、それを加工します。
最初のアルファベット一文字の場合は
Int ( ( シリアル - 1 ) / 999 )
で999レコードずつグループ化できますから、
それごとにアルファベットを割り当てればいいですね。
関数
Char ( 65 )
は
A
を返し、引数が1増えるごとにB・C・D・・・Zまで連続します。
ですから、アルファベットの部分は
Char ( Int ( ( シリアル - 1 ) / 999 ) + 65 )
でいいですね。
数字部分は 0 を前に付けて3桁固定にしますから
Right ( "000" & Mod ( ( シリアル - 1 ) ; 999 ) + 1 ) ; 3 )
でいいですね。
この二つを「&」でテキスト結合して出来上がりです。
アルファベット一文字はシリアルが
26 * 999
以下ですから、これで条件分けします。
同様に二文字から四文字までを作ればいいですね。
全体を考えると採番できるレコード数は
26 * 999 + 26 * 99 + 26 * 9 + 26 = 28808
となりますが、その程度で大丈夫なのでしょうか?
Offline
Z001の次をAA01とかにしたら、増えるかな。
なんか順番がさっぱりわかりにくいですね^^;
1: A000
2: A001
~
999: A999
1000: B001
こんなデータのテーブルを作ってルックアップする。
感想だけでスンマセン。
チポさんスゲェ(ノ゚ο゚)ノ
Offline
ルックアップの照合には普通のシリアル番号を使います。
すいません。。。
みなさんありがとうございました!!!
Pages: 1
[ Generated in 0.008 seconds, 7 queries executed - Memory usage: 513.48 KiB (Peak: 518.02 KiB) ]