Re,
Alors pour situer le décors et essayer de répondre à tes questions
J'utilise une base access qui alimente mon datagridview et vice-versa (Bindingsource-DataTable-....)
Pour la colonne en question, je la formate en datetime et autorise les null.
Pour la colonne du datagridview, je le formate en datetime aussi
Pour l'insertion d'une nouvelle entrée, j'utilise un form qui après validation insère les données par la méthode :
Form1.Table1bindingSource.DataSource.Rows.Add(New Object() {.......})
Pour modifier l'entrée, j'édite la ligne et valide les modification par la mise à jour du Table1datagridview et à la fin, je fais :
1 2 3
| Form1.Table1bindingSource.EndEdit()
Form1.Table1dataAdapter.Update(Ctype(Form1.Table1bindingSource.DataSource, DataTable))
Form1.Table1.AcceptChanges() |
Dans ces données j'ai deux textbox : 1 pour la date et l'autre pour l'heure. Ces deux contrôles font ma variable depart sous la forme 24/03/2016 15:00 (J'ai des contrôles qui s'assurent que tout est au bon format)
il arrive souvent qu'au début, il n'y ai rien d'inscrit dans ces deux champs. Quand je lance l'insertion, je retrouve dans la BDD pour cette colonne la fameuse DateTime.Minvalue et dans le datagridview apparait alors le fameux 01.01.0001 00h00
Ce qui marche est que quand j'édite ma ligne, mes deux textbox restent vides car je pense que le système sait que cette valeur est celle de "remplacement" pour rien.
Mais cette valeur apparait dans la colonne concernée du Datagridview et dans la base access j'ai une date du style 31/12/1899 23h59 qui doit être la MinValue pour access je suppose.
Lorsque j'ai changé la colonne dans access de texte en DateTime, je n'ai eu aucun message particulier malgré le fait que pour plusieurs lignes de la base, la colonne concernée était vide.
J'ai ausssi essayé ce petit bout de code de débutant pour faire un test avant de valider une nouvelle entrée :
1 2 3 4 5 6
| Dim departprevu as DateTime
If isDate(depart) then
departprevu = DateTime.Parse(depart)
else
departprevu = Nothing
end if |
Il me met quand même ces DateTime.MinValue dans la base access et Datagridview.
Si j'enlève le format DateTime de ma colonne dans le Datagridview, il ne me l'affiche plus malgré que dans la base access, j'ai cette valeur. Mais je ne peux plus alors trier ma colonne par ordre chronologique car il va trier la colonne comme du simple texte par ordre alphabétique ....
Voilà, j'espère avoir été assez clair pour toi.
Partager