VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/11/15(Tue) 16:28
投稿者すいけ
Eメール
URL
タイトルRe^5: 和暦で日付を表示したい

ずいぶん遅レスですが
私も同じような経験をしたことがあります。
そのときはMicrosoftの対応をユーザーが待てないと言うことで
DBの中に元号Tableを作成し日付と元号を入れておきました。
(inifileなどでもできます)

日付変換表示(西暦→和暦)の関数を一つ作っておけば
日付に関しては全部ここを通すという感じになります。
関数は複数変換に対応させることをお勧めします。

例えば下記のようなテーブルを用意して処理すると楽です。

元号Table
GNo    Gengo    StartDate
1    明治    1868.9.8
2    大正    1912.7.30
3    昭和    1926.12.25
4    平成    1989.1.8

で、一件の変換であればSQL1文ですんでしまいます。
SQLstr = "Select Gengo From 元号Table Where StartDate <= " & TargetDate & " Order by StartDate DESC;"
(久しぶりなんで間違ってたらごめんなさい)
これでTargetDateにはいっている日付より小さく且つその中で最大のレコードがTopにきてるはずです。

複数変換が必要であれば
SQLで全部持ってきておいて配列にいれ
配列の最大値までループでまわしながら該当する元号を見つけたらループを抜けて
次のTargetDateをまた頭からまわす。
Dataに偏りが有る場合(たとえば平成Dataが多いのであれば)
配列自体は平成から明治へと順番に回すようにすると多少ですが処理が軽くなります。

この昨日は何度も変換するよりこの変換機能を処理上のどこに置くかによって
全然違いますのでSEやユーザーとよく相談して決めるのがいいでしょう。

もちろん元号Tableへのマスター登録削除編集機能は忘れずに・・


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -