Problème avec l'item d'un comboBox

fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012 - 15 mai 2008 à 23:04
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 - 18 mai 2008 à 10:39
Bonjour,

J'aurai encore besoin d'une ame charitable...
J'ai une application windows et j'y ai mis 3 comboBox pour spécifier une date.
J'ai donc spécifié la propriété items pour mettre dans le premier des nombres de 1 à 31 correspondant au jour, 1 à 12 pour les mois et 1980 à 2000 pour l'année.
J'aurai voulu savoir s'il était possible de limiter au nombre 28 pour le premier dans le cas ou le second est 2 et l'année non divisible par 400.

après ça je concaténerai les valeurs dans un chaine puis le convertirai en DateTime pour l'enregistrer dans ma DB
-Faut il construire la chaine spécifiquement pour le convertir après et pouvoir la stocker avec sql server
string date = "20080515";
dateTime maDate = convert.toDateTime(date); 

est ce que ceci marchera pour l'enregistrer après dans ma DB

Merci de votre aide

13 réponses

WishhhMaster Messages postés 327 Date d'inscription mardi 17 février 2004 Statut Membre Dernière intervention 10 avril 2010 8
15 mai 2008 à 23:20
Salut,

Pourquoi tu n'utilises pas le control DateTimePicker? Il est fait pour ça
0
imothepe_33 Messages postés 168 Date d'inscription mardi 27 juillet 2004 Statut Membre Dernière intervention 28 novembre 2012 7
15 mai 2008 à 23:26
Ce que tu peux faire c'est créer une liste d'entier par exemple liste28 contenant des entiers de 1 à 28 et tu vérifie si ton combo liste contenant les mois est égale à 2 alors tu fais par exemple comboMois.DataSource = liste.

Pour la date je te conseillerais de faire un truc de ce genre :

DateTime date = new DateTime(int.Parse(tonAnnée),int.Parse(tonMois),int.Parse(tonJour));

La date récupérée est maintenant stockée dans 'date'.

Only the strong survive !
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mai 2008 à 09:11
Même avis que WishhhMaster... le plus simple et le plus sur est d'utiliser un DateTimePicker... en plus les mois de février n'ont pas tous 28 jours... il ne faut pas oublier les années bissextiles.

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
0
fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012
16 mai 2008 à 11:11
salut et merci de vos propositions rapide

le problème avec le DateTimePicker est que je suis obligé d'avoir une valeur pour la date.
Or, l'utilisateur doit pouvoir choisir de faire une recherche sur le nom ou/et sur la date de naissance c'est pour celà qu'en utilisant un comboBox je peux laisser le champ pour la date vide.

merci
0

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

Posez votre question
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mai 2008 à 11:14
il suffit d'activé la checkbox... et dans ce cas, tu ne prends la valeur du DateTimePicker que si c'est coché !
ca marche très bien !

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
0
fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012
16 mai 2008 à 11:29
Je pense que c'est le plus simple à réaliser.
merci de ton aide

Si je récupère une dateTime de ma DB Sql server 2005, comment je fais pour l'afficher dans le dateTimePicker?

merci
0
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 mai 2008 à 11:41
bah... tout simplement :

if (Convert.IsDbNull(reader["maDate"])) {
   dateTimePicked.Checked = False;
} else {
   dateTimePicker.Value = (DateTime)reader["maDate"];
}

Sébastien FERRAND (blog)
Consultant Sénior
[Microsoft Visual C# MVP]
0
fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012
16 mai 2008 à 12:49
J'aurai encore une petite question.

J'ai une méthode qui reçoit en paramètre le nom (issu d'un textBox) et la date (venant d'un datetimepicker)
je crée donc 2 sqlParameter:
SqlParameter

param =
new
SqlParameter(
"@PAT_NOM",
SqlDbType.VarChar);

SqlParameter param2 =
new
SqlParameter(
"@PAT_DTE_NAI",
SqlDbType.DateTime);com.Parameters.Add(param);

com.Parameters.Add(param2);

com.Parameters[

"@PAT_NOM"].Value = nomPatient;//paramètre de la méthodecom.Parameters[

"@PAT_DTE_NAI"].Value = datePatient;//paramètre de la méthode

Mais j'ai un problème pour faire ma requête dans le commandText

J'ai écrit ceci qui ne fonctionne pas:
com.CommandText "select * from PAT where PAT_NOM like @PAT_NOM+'%' AND PAT_DTE_NAI @PAT_DTE_NAI";

merci
0
Miltiades Messages postés 233 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 25 octobre 2010
16 mai 2008 à 14:11
ca semble normal que ta requete marche pas...

PAT_NOM like @PAT_NOM+'%' va etre traduit en PAT_NOM like 'monpatnom''%'
ce qui n'est pas ce que tu cherche... la solution "simple serait d'ajouter le % a la fin du parametre juste avant l'appel de la requete...

Nul ne devient grand par la guerre...
0
fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012
16 mai 2008 à 16:36
Pour ce qui est de ma requête quand je recherche par le nom

"select * from PAT where PAT_NOM like @PAT_NOM+'%' ";  //cete requête fonctionne parfaitement et me retourne ce que je dois avoir

si je tape 'M' il me retourne tous les noms commençant par 'M'

le problème vient avec le paramètre pour la date.
cette requête no fonctionne pas

"select * from PAT where PAT_DTE_NAI = @PAT_DTE_NAI";

pour info la date vient du dateTimePicker et doit etre comparée avec une date stockée dans une DB SQL server 2005

Merci a de votre aide
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
17 mai 2008 à 21:27
Salut,

PAT_DTE_NAI = @PAT_DTE_NAI ne fonctionnera bien évidemment que si les 2 valeurs sont strictement identiques et pas seulement les parties date de celles ci.

/*
coq
MVP Visual C#
CoqBlog
*/
0
fabian86 Messages postés 31 Date d'inscription dimanche 6 mai 2007 Statut Membre Dernière intervention 5 mai 2012
18 mai 2008 à 10:33
salut,

Comment je peux faire pour que le format soit exactement identique en sachant que les données sont sur une DB de sql server 2005 et que la date pour comparer vient d'un DateTimePicker

Merci
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
18 mai 2008 à 10:39
Si seule la date servira de toute façon, stocke seulement la date en passant la partie heure à 0 (voir propriété DateTime.Date notamment).
Ca devrait être moins couteux que faire cette opération au moment de la comparaison en base.

/*
coq
MVP Visual C#
CoqBlog
*/
0
Rejoignez-nous