みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
皆さん、こんにちは。Win版V18を使っています。
下記の様なルールでシリアル番号を振りたいのです。
分類テーブル
00 Aタイプ
01 Bタイプ
02 Cタイプ
04 Dタイプ
…
ここで、Aタイプのデータを作成したらシリアル番号は
00-0001~
Bタイプのデータを作成したらシリアル番号は
01-0001~
の様に分類番号 0X-000X 0から始まる4桁数字
これをシリアル番号のフィールド定義の自動化入力オプションの所に設定したいのですが、どのように記述したら良いか教えてください。
前半はCase関数でいけると思うのですが、後半をどうしたらよいのでしょう?
よろしくお願いします。
Offline
テーブルの構造がよくわからないですが、分類テーブルと詳細テーブルは別ですか?別であると仮定して説明しますね。
まず詳細テーブルに
分類フィールド(00-04を格納するフィールド)
シリアル値フィールド
を作成します。
次に分類フィールドをターゲットに自己連結リレーションを張ります。
自己連結のテーブルを[詳細テーブルS]とします。
シリアル値フィールドの入力値の自動化:計算値の所に
SerialIncrement ( "0001" ; max ( 詳細テーブルS::シリアル値 ) )
とし、[既存値が存在]のチェックを外しておきます。これで4桁のシリアル値は取得できます。
あとは、ビジュアル的に0X-XXXXが欲しいなら分類フィールドとシリアル値フィールドを組み合わせてレイアウト上に配置すればいいし、
データ格納として0X-XXXXが欲しいならもう一つ計算フィールドを作って書き出してあげればいいです。
これは個人的な意見なので正しいかどうかはわかりませんが、セパレータにハイフンを使うと、データ加工時にソフト側がハイフンなのか算術演算子なのか判断出来ないため、バグの原因になるのであまりオススメしません。
Offline
ブランコさん、回答ありがとうございました。
その後、ちょっと運用を変更しました。このリストはDM用のリストで、タウンページからデータ取得を取得します。当初はデータ取得時にシリアルNOを発行しようと思っていたのですが、ダブりや廃業したところも載っているので、その中から選別したものに対してだけシリアル値をスクリプトで振るようには出来ました。ですので、運用は出来るようになりました。
セパレーターにハイフンを使わない方が良いとのご指摘、確かにそうなので変更するようにします。
さて、せっかく教えていただいたので、試したところどうもうまくシリアル値が入力されません。
作ったファイルは下記にあります。
https://www.dropbox.com/s/tpyfblczw8gvb … fmp12?dl=0
どこがいけないのでしょう?データ作成時に分類NOが入っていないせいのような気がします。
よろしくお願いします。
Offline
ファイルを拝見させていただきました。
シリアル値フィールドの入力値の自動化:計算値の所に
SerialIncrement ( "0001" ; max ( 詳細テーブルS::シリアル値 ) )
ここの説明が不足していました。すみません。
ここの画面下の
すべての参照フィールドが空の場合は評価しない
のチェックを外して下さい。それでうまく動作します。
このような分類でシリアル値を振る仕組みでは、途中で分類の変更をするとシリアル値が無茶苦茶になるので
可能であれば作成時以外は値の変更を禁止する仕組みを取り入れた方がよいです。
Offline
ブランコ さん、回答ありがとうございました。
>>すべての参照フィールドが空の場合は評価しない
これでうまく行きました。どうもありがとうございました。
SerialIncrement
古くからこんな関数があるんですね。初めて知りました。
使えそうです。
どうもありがとうございました。
Offline
Pages: 1
[ Generated in 0.009 seconds, 7 queries executed - Memory usage: 513.88 KiB (Peak: 518.78 KiB) ]