当ブログに掲載しているサンプルは、すべて利用者の自己責任という形でお願いします。
ただし、明らかな不具合がある場合、ご連絡いただければ、訂正記事を出します。
また、こちらのサンプルは、別のサイト等への公開、転載は一切禁止しています。
どうしてもと言う場合は、筆者にあらかじめご連絡ください。
記事そのもののリンクについてはご自由に行っていただいてよいです。

テクてく Lotus 技術者 Slack に参加しよう!

2017年5月12日金曜日

西暦和暦変換をやってみよう

皆さん、こんにちは。
気が付いたら、黄金週間も終わって、しばらくは連休がない日が続くことになっています。
そう考えると憂鬱になりますね。5月病かな(笑)


さて、今日はしばらく記事を書いていなかったので、単なるネタ記事です。


今日も、どこぞでどなたかが呟いていましたが(スミマセン、こっからネタ拝借ですw)、今年って平成xx年だっけ?
かくいう私もよく忘れるので、Excelで変換して確認しています。


しかぁし!


Notes技術者たる者、Excelに頼ってはいかぁん!!
ということで、Notesで計算させることにしました(笑)

@関数を使って実現する方法を探したところ、西暦の年数から引き算をするという何とも原始的な方法しか見つかりませんでした。
だったら電卓使って計算するわ(<=暗算しろよ・・・とかいうツッコミは不要)!

ということで、LotusScriptを使ってできるかどうかを調査してみました。


・・・
はい、ありました。
Format関数です。
Format 関数 (LotusScript 言語)
第一引数に日付を与えたら、第二引数に日付/時刻の形式コードから「ggg」と「ee」(それぞれ元号と元号に基づいた年)をセットします。
これで日付に基づいた元号と年が表示されます。
簡単ですね。


ということで、サンプルです。
これは、フォーム内の「InputDate」というフィールドに入力された西暦の日付を和暦に変換して「OutputDate」というフィールドにセットするものです。


Sub Click(Source As Button)
    Dim uiws    As New NotesUIWorkspace
    Dim uidoc   As     NotesUIDocument
    Dim inputDT As     String
    Dim convDT  As     String
    
    Set uidoc = uiws.CurrentDocument
    
    inputDT = uidoc.FieldGetText("InputDate")
    convDT = Format( Cdat(inputDT), "gggee年mm月dd日" )
    
    Call uidoc.FieldSetText( "OutputDate", convDT )
End Sub


下図はこのプログラムを埋め込んだサンプル画面です。
西暦を和暦に変換する

画面デザインさえ凝らなければ、ものの数分で作れます。
さすがNotesですね。


このサンプルDB、ほしい人は弊社宛ににメールください(メールアドレスは探してくださいね) 。
今回は、無料で差し上げます。ただし、サポートは一切ありませんので悪しからず。

いらないよね(笑)




確かそのうち、平成の元号も変わるよね?とかなんとかで、和暦の計算がだんだん難しくなります。
Notesは元号が変わったら、Feature Packで対応してくれるのかな?とかいらぬ心配をしています(笑)



それでは今日はこの辺で・・・





Notes/Dominoで困ったことがあれば、弊社にお問い合わせください。
IBM Championの私が承ります!
お問い合わせはこちらから→Lotus Notes/Domino カスタマイズとセキュリティ強化 - 株式会社エフ

0 件のコメント: