IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

probleme avec dateTimePicker


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut probleme avec dateTimePicker
    bonsoir les développeurs je suis débutant en C# et SQL Server 2008, j'ai crée une application de gestion des rendez-vous.

    Mais j'ai une erreur au niveau de la recherche par date choisie par l'utilisateur dans un DateTimePicker

    voici la reqête:

    query1 = "SELECT commande.daterdv,client.nomclt,client.prenclt,client.telclt,commande.codcom,commande.datcom FROM commande,client WHERE commande.codclt=client.codclt AND commande.datcom='" + dateTimePicker1.Value + "'";

    le reste du code se trouve sur l'mage suivante:




    Et voici l'image de l'erreur que m'affiche le compilateur





    quelqu'un peut-il m'aider?merci d'avance
    Images attachées Images attachées  

  2. #2
    Membre émérite Avatar de ctxnop
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2007
    Messages : 858
    Par défaut
    Salut,
    Pourquoi avoir coller une image du code ? Tu as peur qu'on fasse un copier/coller ?
    Y'a une balise pour mettre du code ...

    Bon sinon pour ton problème, ca t'apprendra à respecter les bonnes pratiques ! On ne passe pas une valeur en créant une chaine, c'est source de problème, notamment de sécurité.
    Il existe un système de paramètre sur les requêtes, en plus c'est plus performant.

    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    query1 = "SELECT commande.daterdv,client.nomclt,client.prenclt,client.telclt,commande.codcom,commande.datcom FROM commande,client WHERE commande.codclt=client.codclt AND commande.datcom=@MaDate"; // Pas de quote autour du paramètre
    using(SqlCommand cmd = new SqlCommand(query1, cnx)) // On passe la requête et la connexion directement dans le constructeur
    {
        // Création d'un paramètre et ajout de celui-ci dans la commande
        SqlParameter p = new SqlParameter("@MaDate", SqlDbType.DateTime);
        p.Value = dateTimePicker1.Value;
        cmd.Parameter.Add(p);
       // Le reste du code ne change pas
    }

    Quelques remarques :
    - Utilise les constructeurs, ils ont des paramètres, c'est mieux que d'utiliser une propriété après qui fait la même chose.
    - Le SqlDataReader aussi doit être mis dans un using.
    - Plutot que de passer par un SqlCommand + un SqlDataReader, utilise directement un SqlDataAdapter, sa méthode Fill remplit une DataTable (ou un DataSet, au choix), et fait donc en 3 lignes que tu fais en 15... (Le coup du Parameter fonctionne aussi sur SqlDataAdapter)

  3. #3
    Invité
    Invité(e)
    Par défaut
    salut ctxnop merci d'avoir repondu à mon problème.Pour repondre à votre question sachez que je ne savais pas qu'il y avait des balise pour ecrire du code
    et pour mon problème comme je l'ai predit je suis un debutant donc si pouvez me donner le reste du code de votre methode cela m'eviterais 15 lignes au profit de 3.Sinon j'ai essayer de modifier mon code mais ça ne fonctionne pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     query1 = "SELECT commande.daterdv,client.nomclt,client.prenclt,client.telclt,commande.codcom,commande.datcom FROM commande,client WHERE commande.codclt=client.codclt AND commande.datcom=@MaDate"; // Pas de quote autour du paramètre
                        using (SqlCommand cmd = new SqlCommand(query1, cnx)) // On passe la requête et la connexion directement dans le constructeur
                        {
                            // Création d'un paramètre et ajout de celui-ci dans la commande
                            SqlParameter p = new SqlParameter("@MaDate", SqlDbType.DateTime);
                            p.Value = dateTimePicker1.Value;
                            cmd.Parameters.Add(p);
                            SqlDataReader rd = cmd.ExecuteReader();
                            dataGridView1.Rows.Clear();
     
                            if (rd.HasRows)
                            {
                                while (rd.Read())
                                {
                                    dataGridView1.Rows.Add(rd[0], rd[1], rd[2], rd[3], rd[4], rd[5]);
                                }
                            }
                            else
                            {
                                MessageBox.Show("Aucune donnée trouvée");
                            }
     
                            rd.Close();
     
                            // Le reste du code ne change pas
                        }

Discussions similaires

  1. [C#] Probleme avec le dateTimePicker
    Par bodygard dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/04/2005, 22h56
  2. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo