2017-05-09 4 views
2

おそらく簡単なものですが、実際にはわかりません。 VBでは、私はDateTimePickerを持っています。私は日付を設定し、その日付を別の形式でデータベースに格納することができます(残念なことにオプションではありません)。VB DateTimePickerを特定の値に設定したときのカスタム入力フォーマット

私はうまく問題は他の方法で回避され

foo = DatePicker.Value.ToString("yyyyMMdd")) 

を使用して書式DD.MM.YYYYの日付とデータベースでYYYYMMDDのようにコードを格納し、それを入力します。私は、データベースからYYYYMMDDの日付を読みますDateTimePickerをその値に設定したいのですが、それでもdd.MM.yyyyという値を表示する必要があります。

DatePicker.Value = ds.Tables("items").Rows(0).Item(9) 

(yyyyMMddの値はそのテーブルフィールドに格納されます)。私はまた、

DatePicker.Value = New Date("20130303") 

のようなものを試しました。どのように巧みに別の日付形式にそのような文字列を解析するでしょうか?私は、4バイトの年、2バイトの月と2バイトの日に手動で文字列を分割した後

DatePicker.Value = New Date(year, month, day) 

を使用するなど、より効率的な方法があることを、確信しています。

ありがとうございました。

ルーク

+0

データベース列のデータ型は?その中に日付を格納すると日付にする必要があります。したがって、DateTImePickerに値を復元する際に問題はありません – Steve

+0

残念ながら文字列です。 – Lukebo

答えて

1

DateTimePicker.Valueのプロパティを使用すると、列の内容を変換する必要があるので、日時に(文字列のように見える)、日時を期待しています。

Valueプロパティを設定した後は、アプリケーションで必要な形式でDateを表示するDateTimePickerジョブです。

あなたはcolumに保存されている形式について確実である場合、あなたは今、私は一つのことを言わせてDateTime.ParseExact

Dim tb as DataTable = ds.Tables("items") 
DatePicker.Value = DateTime.ParseExact(tb.Rows(0).Item(9), "yyyyMMdd", CultureInfo.InvariantCulture) 

を使用することができます。 「yyyyMMdd」のような書式を使用する場合は、テキスト列に日付を格納しないでください。 DateTime値はDateTime列に格納する必要があります

+0

ありがとう、スティーブ。それはとてもうまくいく。残念ながら、私はデータベースの構造に影響を与えません。 – Lukebo

+0

私はそう思った... – Steve

関連する問題