現在Accessの開発を行っていて、お客様の要望で西暦入力したものに対して和暦の年も表示させたいということで、どうしようかな~と迷ったのですが、西暦を和暦に変換する対応テーブルを作成して対応することにしました。これにより今後更に和暦が変更された時でも対応テーブルを修正すればプログラムの修正は不要となります。
テーブルレイアウトの設計
m_wareki 和暦変換マスタ
id オートナンバー 主キー
start_date 日付型
end_date 日付型
wareki テキスト
データに入れる内容をエクセルに作成します。
項目もこの時に考えます。
実際にエクセルで設計してからテーブルレイアウト作成します。
レイアウト作成したら、先ほどエクセルで作成したデータを投入して完成です。
・平成→和暦になった所の範囲指定を設定します。
・期間は重複しないようにします。
・このマスタは設定マスタレベルだと思うのでメンテ画面は用意しません。
・いつからいつまでの西暦に対応するのかを考える必要があります。
画面にコントロール配置
フォームにテキストを2つ設置します。
上のテキストは日付型のものになります。
これを入力した際に下に和暦の年を表示します。
下の和暦表示用テキストのコントロールソースに
=DLookUp("wareki","m_wareki","start_date <=[分娩予定日] and end_date >= [分娩予定日]")
と記述すると自動的に和暦が表示されます。
本当はVBA派でこういう関数はあまり好きではないのですが時々使用します。
描画テスト
入力するテキストの更新後イベントにて
Private Sub 分娩予定日_AfterUpdate() Me.txt分娩予定日和暦.Requery End Sub
と記入します。Me.Recalcでも良いけれど一瞬画面がチカチカするので
こちらのほうがこのコントロールのみ再計算してくれるので良さそうです。
Accessは再描画コマンドが多くて、毎回意味をチェックして使うけど
結局、確たる信念やマイルールがあるわけではなく、なんとなく良さそうなのを採用しています。
まとめ
和暦変換関数が平成までしか対応していないので、それに伴う修正がそれなりに発生しています。
関数を素直に使っているソースコードもあれば独自に関数を作成しているソースコードもあって
対応する側としては、統一感がないので一番困る所です。
もういっその事、西暦だけで対応しているシステムも増えました。
でも、お役所関係の書類は、殆ど和暦表示のような気がします。
今回は表示だけなので良かったですが、入力を和暦となるともう少し大変そうに思います。
下記参考サイトにて大変助かりました。
コメント