FC2ブログ
 

Technology へようこそ
ここは技術者の「経験」と「ノウハウ」のブログです


--年--月--日

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


2010年02月12日

曜日の名前

VB 2005で作成したWindowsフォームアプリの多言語対応化の作業をしています。
アプリではSQL Server 2005のデータベースからの情報を
Crystal Reports for VB 2005より帳票出力しています。

多言語対応化として幾つか対応事項となった中の一つに曜日の取扱い方がありました。

帳票上に日付項目(表示形式"2010/02/12(金)10:00")があり、
そのまま中国OS環境上で実行した場合は"2010/02/12(星)09:00"となりました。
これは単にSQL Serverのストアドプロシージャで強制的に曜日の名前より
先頭1文字を取っている為、中国OS環境では曜日の名前が
「星期一、星期二、星期三、星期四、星期五、星期六、星期日」となり
いずれの曜日でも先頭1文字で"星"となったというオチです。
そもそも曜日の名前をそのまま表示できる仕様であれば問題なさそうですが
日本では"(金)"などの表示形式は往々にしてありそうなものです。

対応方法としてまずCrystal Reports の帳票デザイン上にて日付項目の式フィールド内に
関数WeekDayName(曜日,省略タイプ)を用いて編集という方法を試みました、
結果は日本OS環境では"金"となりましたが中国OS環境では"星期五"となってしまい断念、
今回はSQL Server側からストアドプロシージャ内にて以下のような対応方法を採用しました。
-- 現在の Microsoft Windows のロケール ID 取得
declare @iLcid int
select @iLcid = [lcid] from [sys].[syslanguages] where [name] = @@LANGUAGE

-- ロケール IDに該当する国毎に曜日の名前を編集
if @iLcid = 1041
-- Japanese
select left(datename(dw, getdate()), 1)
else if @iLcid = 2052
-- Simplified Chinese
select right(datename(dw, getdate()), 1)
else if @iLcid = 1033
-- English
select left(datename(dw, getdate()), 3)
else
-- etc.
select datename(dw, getdate())
[ posted by kami ]

この記事に対するコメント


この記事に対するコメントの投稿














管理者にだけ表示を許可する



この記事に対するトラックバック
トラックバックURL
http://comfair2.blog24.fc2.com/tb.php/455-0e4971c1
この記事にトラックバックする(FC2ブログユーザー)











上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。