Problème avec l'item d'un comboBox

Signaler
Messages postés
31
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
5 mai 2012
-
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
-
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

Messages postés
327
Date d'inscription
mardi 17 février 2004
Statut
Membre
Dernière intervention
10 avril 2010
8
Salut,

Pourquoi tu n'utilises pas le control DateTimePicker? Il est fait pour ça
Messages postés
168
Date d'inscription
mardi 27 juillet 2004
Statut
Membre
Dernière intervention
28 novembre 2012
6
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 !
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
31
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
5 mai 2012

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
31
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
5 mai 2012

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
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
36
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]
Messages postés
31
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
5 mai 2012

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
Messages postés
233
Date d'inscription
vendredi 21 mars 2003
Statut
Membre
Dernière intervention
25 octobre 2010

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...
Messages postés
31
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
5 mai 2012

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
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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
*/
Messages postés
31
Date d'inscription
dimanche 6 mai 2007
Statut
Membre
Dernière intervention
5 mai 2012

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
Messages postés
6351
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
92
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
*/