djdiabolik
Messages postés56Date d'inscriptionmardi 23 avril 2002StatutMembreDernière intervention20 avril 2007
-
13 avril 2007 à 17:37
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 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)
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
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
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 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.
djdiabolik
Messages postés56Date d'inscriptionmardi 23 avril 2002StatutMembreDernière intervention20 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