- - PR -
DataGrid の表示形式を指定する方法について
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-08-14 10:50
いつもお世話になっております。なり と申します。
以下の環境でWeb アプリを作成しているのですが、DataGrid の表示形式について不明な点が出てきてしまい、質問させていただきたく、よろしくお願いします。 (もし、Database Expert 板にいくべし!であれば、そのようにご指摘ください) ■環境 Windows Server 2003 + .NET Framework 2.0 + Vitual Web Developer 2005 Express MS SQL Server 2000 SP4a ■やりたいこと データベースに datetime 型で保存されているデータを、DataGrid 上でmm/dd 形式で表示したい。 調べてみたところ、MySQL では Date_format を使用して、データベースの Select 時に形式を指定できるようなのですが、今まで調べてみたところ、MS SQL には使えないようで、 ・MS SQL で形式を指定しての Select ができないか ・Datagrid の設定で表示形式を指定できないか の観点で調べていますが、いまだ情報が見つからない状態です。 注意点としては、データベースの datetime は、DBNULL の場合があるという点です。 上記の方法について、ヒントをいただければと思いますので、よろしくお願いします。 | ||||
|
投稿日時: 2006-08-14 12:00
SELECT したときに .NET の DateTime 型の変数に値を入れて、いざ UI で表示する時に、DateTime 型に書式指定出力(ToString() メソッドで可能)させればよいです。
DBNull の場合があるということなので、厳密には Nullable の DateTime 型になるか、DataSet を UI まで持ち運んでいるならば、出力する時に DBNull チェックです。 _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 2006-08-14 13:31
囚人さん
早速のお返事ありがとうございます。 すみませんが、理解しきれていないので、追加で教えていただいてもよろしいでしょうか。
現在、DataGrid への表示は、次のようなコードで行っています。 変数に代入する方法は分かりますが、DataGrid に表示させる場合に、どう設定したら表示できるのか、ご教示いただけませんでしょうか。 ■コード Dim cn_list As New SqlConnection cn_list.ConnectionString = "Data source=localhost; Initial Catalog=support;Trusted_Connection=false;User ID=sa;Password=password;" Dim cmd_list As New SqlCommand cmd_list.CommandText = "select a, b, c from list where a='xxx' order by a" cmd_list.Connection = cn_list cn_list.Open() Dim rdr As SqlDataReader = cmd_list.ExecuteReader =囚人さんからのアドバイス追加分======================== dim tmp_b as datetime If not ISDBNUKK(rdr("b")) then tmp_b = rdr("b") end if ========================= Me.list_xxx.DataSource = rdr Me.list_xxx.DataBind() rdr.Close() cn_list.Close() | ||||
|
投稿日時: 2006-08-14 15:29
>・Datagrid の設定で表示形式を指定できないか 囚人さんのはこちらの方法ですが >・MS SQL で形式を指定しての Select ができないか 表示に使うだけであればこちらの方法でもできます。 select right(convert(varchar,日付,111),5) from テーブル名 一応mm/ddの形になるはずです。 DBNullだった場合は値はそのままですので IsNullで変換するか表示前にDBNullチェックしてください。 | ||||
|
投稿日時: 2006-08-15 14:13
eterniaさん
ご返答ありがとうございます。 早速試してみたところ、希望の表示形式になりました。 ありがとうございました。 今後同じようなことを伺うのも申し訳ないので、もし可能ならご教示いただきたいのですが、111 や 5 が変換の形式を指定しているかと思いますが、こういった情報はどのようなキーワードで調べればよいか、ご教示いただけませんでしょうか。 お忙しい中とは存じますが、よろしくお願いします。 | ||||
|
投稿日時: 2006-08-15 14:58
こんにちは。
eternia さんではありませんが…
111 は変換の形式をあらわしていますが、 5 は right の引数なので「右 端から 5 文字取り出してよ」という意味ですね。 111 は convert 関数の引数で、yyyy/mm/dd 形式に変換させるための フォーマット値です。 で、どういったキーワードで調べればよいか、ですが。 111 の値自体は、MSDN で convert 関数を調べてもらえればなんとか たどり着けそうな気がしますが、それにはまず convert に行き着く必要が ありますね。 私の場合は他の DBMS で使われている format や TO_CHAR などの語 句を頼りに Google 先生に聞き倒しました。あとは「SQL Server 日付」や 「SQL Server 変換」とかなんとか。 Google 先生でなくとも Yahoo! 教授でも MSDN 大統領でもなんでもい いわけですが、一つの語句から関連付けて次々調べていくというのはいいか もしれません。 検索するときのコツとして「自分ならこの語句をどういった文章で書くか」を意 識するのがいいんじゃないでしょうか。検索で該当するページは基本的には 誰かが書いた文章だったりするわけで、語句だけで検索するよりは「〜とは」 とか文章仕立てで検索してみるのもいいかもしれませんね(MSDN 除く)。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||
|
投稿日時: 2006-08-15 15:09
NAL-6295です。
既に他の手段で解決済みのようですが、
バインド列でしたら、 {0:MM/dd}で可能だったと思います。 | ||||
|
投稿日時: 2006-08-15 15:11
とりあえず[SQLServer 書式 変換 日付]等のキーワードで 何を使えば実現できるか(今回はconvert関数)までは辿りつけるかと思います。 それさえわかれば後はmsdn等で調べられますよね? あと、わからない言葉が出てきたらそれをキーワードに検索する癖をつけときましょう。 (囚人さんへの返信もToString()メソッドを調べればすぐわかったはずです) 大抵キーワードは調べたいジャンル+やりたいことで検索しています。 もう少し効率のいい検索方法があるかもしれませんが自分はこんな感じです。 #どうして希望の形式になるのかは調べて理解しておいてくださいね^^; #それと、囚人さんのやり方でもできるようになっておいたほうがいいです。 |