DataBinding et Date dans un TextBox

Résolu
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007 - 13 avril 2007 à 17:37
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 - 22 avril 2007 à 01:40
Bonjour,

je rencontre un problème avec un formulaire avec plusieurs champs liés par DataBinding, plus précisément avec des champs textes qui récupèrent des données de type date depuis un DataSet alimenté par une table SQL Server 2000.
Dans la table SQL aussi bien que dans la DataTable du DataSet, tous mes champs de type Date sont des smalldatetime qui peuvent être nulles (et qui le sont par défaut, sauf un champ qui est obligatoirement renseigné lors de l'extraction des données par la commande Select).
Par défaut donc, lorsque je charge ma BindingSource, et mon BindingNavigator, mon formulaire contient tous les enregistrements de ma Sélection, les textbox destinés à accueillir les dates sont à vide (la plupart des datas sont à null, et pas seulement de type date). Je peux naviguer dedans, et changer les données, etc.
Mieux même quand je veux saisir une date dans un textbox prévu à cet effet, le databinding effectue un contrôle et ne laisse sortir du textbox que si une date valide à été saisie !

Mais cet avantage présente un problème grave à mes yeux : si je rentre dans le champ (en cliquant dedans, ou par tabulation), et que j'en ressors sans rien faire, ok rien ne se passe.
En revanche, si j'ai le malheur d'appuyer sur une touche par erreur qui commence une saisie, même si je supprime ce que j'ai saisi par erreur, je suis obligé de saisir une date valide pour pouvoir sortir du focus sur le textbox en question. C'est grave d'un point de vue ergonomie ET du contenu des données !
Actuellement mes txtbox sont liés de cette manière
txtDateDernierAvis.DataBindings.Add("Text", bsFactures, "DATE_DERNIER_AVIS", True, DataSourceUpdateMode.OnValidation)

J'ai essayé cette autre option :

txtDateDernierAvis.DataBindings.Add("Text", bsFactures, "DATE_DERNIER_AVIS", False, DataSourceUpdateMode.OnValidation)

Mais du coup je suis embetté car il m'affiche l'heure et les minutes (mes datas sont en smalldatetime SQL), et de plus si je tape pas exactement une date du type jj/mm/aa (ou jj/mm/aaaa), la saisie effectuée est effacée sans demander son reste.

Bref c'est tout ou rien...

Quelqu'un aurait-il une autre solution à me proposer, et le cas échéant, pour l'option 2 à False, est-il possible de transformer le txtbox pour qu'il n'affiche plus les heures et minutes?

Un grand merci de m'avoir lu jusque là

----------------------------------------------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????That is the question

6 réponses

djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 11:17
Salut,

j'ai consulté l'utilisateur, et la solution suivante a été acceptée :

txtDateDernierAvis.DataBindings.Add("Text", bsFactures, "DATE_DERNIER_AVIS", False, DataSourceUpdateMode.OnValidation)

Celà dit c'est simplement une solution entre la peste et le choléra à mon avis.

Celà dit également, c'est toujours mieux que de faire 36 cas différents d'update dans un dataset, et ce juste à cause des problèmes que posent les différents objets d'une form...
Le databinding c'est bien, en abuser ça craint, comme on dit...

---------------------------------------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????That is the question
3
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
13 avril 2007 à 18:13
salut,
le problème vient du fait que une fois le contenu d' un textbox
a changé la valeur du champ n' est plus null.
Si tu supprimes c' est chaine vide.(TextBox=Null est erroné)
Solution: ne pas lier ton TextBox.
Et lorsque tu sors de celui-ci tu testes sur son contenu
si c' est "" alors tu mets à jour ton champ en lui affectant
la valeur Null.
0
djdiabolik Messages postés 56 Date d'inscription mardi 23 avril 2002 Statut Membre Dernière intervention 20 avril 2007
16 avril 2007 à 09:21
mmmh,

faire une mise à jour à chaque fois que le focus du textbox est perdu, vu les données que je gère, la nature du réseau et le déjà grand nombre de connexions qui existent, ça me semble moyen comme solution...
Je vais voir avec l'utilisateur la solution qu'il préfère, ça me semble la meilleure solution.

Merci pour l'info en tout cas ! :)
-----------------------------------------------------
Pourquoi faire simple quand on peut faire compliqué?????That is the question
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
16 avril 2007 à 12:14
comme tu dis, http://www.vbfrance.com/auteurdetail.aspx?ID=7831 mmmh ...
tata.Fields("Toto")=Null c' est beaucoup...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
baazze Messages postés 1 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 22 avril 2007
22 avril 2007 à 00:51














0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
22 avril 2007 à 01:40
qu' est ce que c' est que ce baazzar ?
0
Rejoignez-nous