tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル日付だけが・・
記事No6537
投稿日: 2007/11/12(Mon) 11:52
投稿者humi
はじめまして。humiといいます。

現在、学校の卒業制作でVB.NETを使ったプログラムを作成しているのですが、
下記のことでお聞きしたいことがあります。


システム的には、VB上で入力したデータをAccessに格納し、
それをDataGridに表示させるという感じなのですが、日付と時間のところがうまくいきません。

CDateを使ってAccessに格納しているのですが、日付のところはうまくいくのですが、
時間のところが2001/1/1となって表示されません。

時間のところにCDateを使っていること自体おかしいのですが、
なにぶん初心者なので何かいい方法はありませんでしょうか?

よろしくお願いします。

[ツリー表示へ]
タイトルRe: 日付だけが・・
記事No6565
投稿日: 2007/11/16(Fri) 13:15
投稿者るしぇ
>時間のところにCDateを使っていること自体おかしいのですが、
いや、そこはおかしくないでしょう。もともと日付型は日付と時刻を
一緒に管理しており、分けること自体できません。

メモリ管理の話まですれば、日付型は内部で数値型に変換されて
記憶されます。Excel でもそうですが、同じ数値の整数部が日付、
小数部が時間です。そして数値の 1 が日付のいつに対応するかは
システムによって違います。
http://office.microsoft.com/ja-jp/access/HA011102181041.aspx?
[VB.NET]の Date 型は西暦1年1月1日から西暦9999年12月31日まで
対応しており、省略すると0001/01/01となります。
[Excel 2003]だと1900/01/01とかになっちゃいます。
Access は西暦100年1月1日〜かな?まずはそれぞれの処理で日付型の
データが年月日時分で表して正しい値になるか確認してみては?

[VB.NET2003]
    Dim Date1 As Date
    Date1 = CDate("12:50")
    Debug.WriteLine(Date1.ToString("yyyy/MM/dd HH:mm:ss"))
    Date1 = CDate("2007/11/09")
    Debug.WriteLine(Date1.ToString("yyyy/MM/dd HH:mm:ss"))
    Date1 = CDate("2007/11/13 12:15:32")
    Debug.WriteLine(Date1.ToString("yyyy/MM/dd HH:mm:ss"))
[出力]
>0001/01/01 12:50:00
>2007/11/09 00:00:00
>2007/11/13 12:15:32

[ツリー表示へ]