2017-05-09 1 views
2

probablement un facile, mais je ne peux pas vraiment le comprendre. En VB, j'ai un DateTimePicker. Je suis capable de fixer une date et de stocker cette date dans un format différent dans une base de données (malheureusement non facultative).Format d'entrée personnalisé lors de la définition d'un DateTimePicker VB à une certaine valeur

I entrer des dates dans le format dd.MM.yyyy et les magasins de code en tant que yyyymmdd dans la base de données en utilisant bien

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

Le problème est l'inverse: je lis les dates dans aaaaMMjj de la base et souhaite définir le DateTimePicker à cette valeur, mais il doit toujours afficher la valeur en tant que jj.MM.aaaa. Ne fonctionne pas (la valeur dans aaaaMMdj est stockée dans ce champ de table). J'ai également essayé quelque chose comme

DatePicker.Value = New Date("20130303") 

sans succès. Comment pourrait-on analyser intelligemment une telle chaîne à un autre format de date? Je suis sûr, qu'il ya une façon plus efficace que l'utilisation comme

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

après le fractionnement de la chaîne manuellement en un an de 4 octets, deux mois octets et un jour sur deux octets.

Merci de votre aide.

Luke

+0

Quel est le type de données de la colonne de base de données? Il devrait être une date si vous stockez une date à l'intérieur et ainsi vous n'aurez aucun problème en restaurant la valeur à la DateTImePicker – Steve

+0

C'est malheureusement la chaîne. – Lukebo

Répondre

1

Les propriétés DateTimePicker.Value attend un DateTime, vous devez convertir le contenu de la colonne (il semble être une chaîne) à un DateTime. Après avoir défini la propriété Value, le travail DateTimePicker permet d'afficher cette date dans le format requis par votre application.

Si vous êtes absolument sûr du format dans le Colum stocké, vous pouvez utiliser DateTime.ParseExact

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

Maintenant, permettez-moi de dire une chose. Ne stockez pas les dates dans une colonne de texte si vous utilisez un format tel que "aaaaMMdj". Une valeur DateTime doit être stockée dans une colonne DateTime

+0

Merci beaucoup, Steve. Il fonctionne très bien. Malheureusement, je n'ai aucune influence sur la structure de la base de données. – Lukebo

+0

Je suppose que ... – Steve