みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
いつも大変お世話になっております。
19.6.3.302になります。
serial (数字フィールド)番号自動入力
日付 (日付フィールド)
年月(計算フィールド)Year ( 日付 ) * 12 + Month ( 日付 ) 計算結果は数字
m_serial(計算フィールド)SerialIncrement ( "000" ;Count ( テーブル 2::serial )) 計算結果は数字
通し番号(テキストフィールド)計算値自動入力 Month ( 日付 ) & "-" & m_serial 既存値がある場合は置き換えない
テーブル年月 = テーブル2年月
テーブルserial > テーブル2 serial
で自己リレーションをはっております。
トランザクションを使用しますのでレコードの削除はいたしません。
通し番号をテキストフィールドにしている理由は番号検索をしますので、計算フィールドにしてしまうと検索のスピードが遅くなるためです。
既存値を置き換えない理由は番号が変更してしまうのを防ぐためです。
理想の動作としては20203/0313の新規レコードを作成した場合に、3-001
さらに同じ日付の新規レコードを作成した場合は3-002
4月だと4-001・・・100件超える場合もありますので、その場合は4-100・・・など
ほぼ理想通りの動きにはなったのですが、月の最初のレコードを作成した場合に、m_serialが空欄になり、通し番号が「3-」
となってしまいます。
このレコードを無くし、1レコード目から001となった欲しいのですが、どこか改善するべきところはございますか?
何卒ご教授のほど、よろしくお願いいたします。
Offline
全てのフィールドが空の場合に評価しない、がオンになっているのでは。
Offline
Shinさん
おっしゃる通り、オンになっておりました。しかしチェックマークを外すと、番号が自動で入力されなくなってしまいました。
他に何か設定するところはあるのでしょうか?
Offline
書かれた通りだと、
000から始まりますよ。
> テーブルserial > テーブル2 serial
この照合を
テーブルserial >= テーブル2 serial
とすれば、
全てのフィールドが空の場合に評価しない
これがオンでも大丈夫でしょう。
Offline
チポさん
ありがとうございます。
そのリレーションに変更してみました。
が、空欄のままです。
おっしゃるとおり、空欄が000になってくれればそれでよいのですが・・・
どこが問題なのかわからない状況です。
Offline
すみません。
通し番号を
Month ( 日付 ) & "-" & m_serial
から
Month ( 日付 ) & "-"SerialIncrement ( "000" ;Count ( テーブル 2::serial ))
に変更したら表示されるようになりました。
少しこれで様子を見てみようと思います。
Offline
[ Generated in 0.008 seconds, 9 queries executed - Memory usage: 558.47 KiB (Peak: 582.61 KiB) ]