DataBinding et Date dans un TextBox [Résolu]

djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 13 avril 2007 à 17:37 - Dernière réponse : chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 20 avril 2007 à 11:17
3
Merci
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

Merci djdiabolik 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 84 internautes ce mois-ci

Commenter la réponse de djdiabolik
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 13 avril 2007 à 18:13
0
Merci
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.
Commenter la réponse de chaibat05
djdiabolik 56 Messages postés mardi 23 avril 2002Date d'inscription 20 avril 2007 Dernière intervention - 16 avril 2007 à 09:21
0
Merci
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
Commenter la réponse de djdiabolik
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 16 avril 2007 à 12:14
0
Merci
comme tu dis, http://www.vbfrance.com/auteurdetail.aspx?ID=7831 mmmh ...
tata.Fields("Toto")=Null c' est beaucoup...
Commenter la réponse de chaibat05
baazze 1 Messages postés mercredi 17 janvier 2007Date d'inscription 22 avril 2007 Dernière intervention - 22 avril 2007 à 00:51
0
Merci














Commenter la réponse de baazze
chaibat05 1884 Messages postés samedi 1 avril 2006Date d'inscription 20 novembre 2007 Dernière intervention - 22 avril 2007 à 01:40
0
Merci
qu' est ce que c' est que ce baazzar ?
Commenter la réponse de chaibat05

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.