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 :

Problème de paramètre


Sujet :

C#

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Problème de paramètre
    Bonjour tout le monde,

    Voici le code suivant :
    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
    27
    28
    29
    30
    31
    // Code permettant d'afficher les numéros, la quantité passé et facturé de chaque intervention correspondant à la période choisi pour le client choisi.
    			paramNomClient = new SqlParameter("@NomClient", SqlDbType.Char, 20);
    			paramNomClient.Value = NomClient.Text;
    			paramDateMin = new SqlParameter("@DateMin", SqlDbType.VarChar, 15);
    			paramDateMin.Value = DateMin.Value.ToString("yyyy/MM/dd");
    			paramDateMax = new SqlParameter("@DateMax", SqlDbType.VarChar, 15);
    			paramDateMax.Value = DateMax.Value.ToString("yyyy/MM/dd");
    			string InterventionParClt = ("SELECT COUNT(SUBSTRING(IN_NUMINTER, 1,10)) as InterventionParClt, IN_NUMINTER, IN_HPASSE, IN_HFACTUR FROM INTERVENTION, CLIENT WHERE INTERVENTION.IN_NUMCLT=CLIENT.C_NUMCLT AND C_NOMCLT = @NomClient AND IN_NUMINTER BETWEEN @DateMin AND @DateMax GROUP BY IN_NUMINTER, IN_HPASSE, IN_HFACTUR");
    			command = new SqlCommand(sql, connection);
     
    			command.Parameters.Add(paramNomClient);
    			command.Parameters.Add(paramDateMin);
    			command.Parameters.Add(paramDateMax);
     
    			connection.Open();
    			try
    			{
    				SqlDataAdapter dataAdapter = new SqlDataAdapter(InterventionParClt, connection);
    				DataSet ds = new DataSet();
    				dataAdapter.Fill(ds,"InterventionParClt");
    				dataGrid1.DataSource = ds;
    				dataGrid1.DataMember = "InterventionParClt";
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    			finally
    			{
    				connection.Close();
    			}
    Ce code devrait me permettre d'afficher dans un dataGrid 3 colonnes correspondant a des rnseignement de ma base SqlSrver. Je travail sous VS.Net2003.

    Lorsque je teste ce code sans paramètre mais avec des valeurs brut alors ça fonctionne mais depuis que j'ai rajouté les paraètres, ça fonctionne plus.
    A SAVOIR : Plus haut j'ai mis le code suivant doc les paramètres sont déja nommé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SqlParameter paramNomClient = new SqlParameter("@NomClient", SqlDbType.Char, 20);
    			paramNomClient.Value = NomClient.Text;
    			SqlParameter paramDateMin = new SqlParameter("@DateMin", SqlDbType.VarChar, 15);
    			paramDateMin.Value = DateMin.Value.ToString("yyyy/MM/dd");
    			SqlParameter paramDateMax = new SqlParameter("@DateMax", SqlDbType.VarChar, 15);
    			paramDateMax.Value = DateMax.Value.ToString("yyyy/MM/dd");
    Pour revenir à l'erreur, Il me dit que :
    La variable '@NomClien' doit être déclaré
    Mais elle est déja déclaré donc je ne comprend pas pourquoi. Le message d'erreur intervient aprés être passé sur la ligne suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataAdapter.Fill(ds,"InterventionParClt");
    donc au moment de passer sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dataGrid1.DataSource = ds;
    Avez-vous une idée pourquoi?? et comment je peux résoudre ce problème?? car j'ai beau réfléchir, étudier le code.... depuis des heures je ne trouve pas pourquoi et comment.

    Merci d'avance!!
    Cordialement.

  2. #2
    Membre éclairé Avatar de ZaaN
    Inscrit en
    Novembre 2005
    Messages
    819
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 819
    Points : 661
    Points
    661
    Par défaut
    Le @ s'utilise devant une chaine (avant les guillements double) pour la rendre literalle et non pas à l'interieure...
    Pour les details, cherche tout seul !

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Points : 553
    Points
    553
    Par défaut
    La variable '@NomClien' doit être déclaré
    Je vois qu'il manque le "t" à la fin de ton nom de variable. Est-ce une erreur de ta part ou est-ce le bon message d'erreur ? Tu as peut-être un simple problème de nommage, une différence entre le nom de ta variable dans ta déclaration de paramètre et dans ton code SQL.

  4. #4
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut réponse à BCmDev et à ZaaN
    Bonjour,

    Réponse à BCmDev : Désolé mais c'est une erreur de ma part lorsque j'ai recopié l'erreur.

    Réponse à ZaaN : J'ai essayé en mettant les @ avant les " mais toujours pareils. Donc suis revenu comme avant c'est-à-dire les @ entre " et le nom du paramètre.

    Je vous envoi ci-joint dans un document word l'erreur qu'il m'affiche.

    Je vois vraiment pas comment cela se fait-il.

    Merci d'avance!!

  5. #5
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par loic20h28 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                command = new SqlCommand(sql, connection);
                command.Parameters.Add(paramNomClient);
                command.Parameters.Add(paramDateMin);
                command.Parameters.Add(paramDateMax);
    C'est bien ..... mais t'en fais quoi de ton objet command après !!??

  6. #6
    Membre éprouvé Avatar de neptune
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2003
    Messages : 835
    Points : 958
    Points
    958
    Par défaut
    Citation Envoyé par ZaaN Voir le message
    Le @ s'utilise devant une chaine (avant les guillements double) pour la rendre literalle et non pas à l'interieure...
    Mais ici le @ est utilisé pour nommer des paramètres, ils sont donc à la bonne place.

  7. #7
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Encore une chose, c'est la première fois que je vois quelqu'un faire l'effort d'utiliser des paramètres SQL pour ensuite affecter tous les paramètres en type nvarchar et leur passer du ToString()...
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  8. #8
    Membre expérimenté Avatar de bossun
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 359
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 359
    Points : 1 443
    Points
    1 443
    Par défaut
    Comme le dit kalpan, tu as un object commande, mais tu ne l^'utilise pas pour executer les requetes..


    ton erreur est là
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SqlDataAdapter dataAdapter = new SqlDataAdapter(InterventionParClt, connection);
    met ça à la place

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    command = new SqlCommand(InterventionParClt, connection);
    SqlDataAdapter dataAdapter = new SqlDataAdapter(command)
    il vaut mieux prendre son pied que de se prendre la tête!!

    http://bossun.noxblog.com

  9. #9
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut Réponse à tout le monde
    Bonjour tout le monde,

    Je vient d'essayé ce que bossum me disait ce qui me donne le code suivant :
    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
    27
    28
    29
    30
    31
    // Code permettant d'afficher les numéros, la quantité passé et facturé de chaque intervention correspondant à la période choisi pour le client choisi.
    			paramNomClient = new SqlParameter("@NomClient", SqlDbType.Char, 20);
    			paramNomClient.Value = NomClient.Text;
    			paramDateMin = new SqlParameter("@DateMin", SqlDbType.VarChar, 15);
    			paramDateMin.Value = DateMin.Value.ToString("yyyy/MM/dd");
    			paramDateMax = new SqlParameter("@DateMax", SqlDbType.VarChar, 15);
    			paramDateMax.Value = DateMax.Value.ToString("yyyy/MM/dd");  
    			string InterventionParClt = ("SELECT COUNT(SUBSTRING(IN_NUMINTER, 1,10)), IN_NUMINTER, IN_HPASSE, IN_HFACTUR FROM INTERVENTION, CLIENT WHERE INTERVENTION.IN_NUMCLT=CLIENT.C_NUMCLT AND C_NOMCLT = @NomClient AND IN_NUMINTER BETWEEN @DateMin AND @DateMax GROUP BY IN_NUMINTER, IN_HPASSE, IN_HFACTUR");
     
    			command.Parameters.Add(paramNomClient);
    			command.Parameters.Add(paramDateMin);
    			command.Parameters.Add(paramDateMax); 
     
    			connection.Open();
    			try
    			{
    				command = new SqlCommand(InterventionParClt, connection);
    				SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
    				DataSet ds = new DataSet();
    				dataAdapter.Fill(ds,"InterventionParClt");
    				dataGrid1.DataSource = ds;
    				dataGrid1.DataMember = "InterventionParClt"; 
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    			finally
    			{
    				connection.Close();
    			}
    Mais j'ai toujours le même problème.

    J'ai essayé en supprimant les paramètres(donc de remplacer les paramètres par des valeurs brut et ça fonctionne parfaitement.)

    Je vois pas d'ou provient le problème. Si quelqu'un a une idée, qu'il me fasse signe!!

    Cordialement.

  10. #10
    Débutant  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 571
    Points : 353
    Points
    353
    Par défaut J'ai réussis!! ENFIN!!
    C'est bon j'ai réussis a régler mon problème.

    Le code à présent est celui la :
    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
    27
    28
    29
    30
    31
    // Code permettant d'afficher les numéros, la quantité passé et facturé de chaque intervention correspondant à la période choisi pour le client choisi.
    			paramNomClient = new SqlParameter("@NomClient", SqlDbType.Char, 20);
    			paramNomClient.Value = NomClient.Text;
    			paramDateMin = new SqlParameter("@DateMin", SqlDbType.VarChar, 15);
    			paramDateMin.Value = DateMin.Value.ToString("yyyy/MM/dd");
    			paramDateMax = new SqlParameter("@DateMax", SqlDbType.VarChar, 15);
    			paramDateMax.Value = DateMax.Value.ToString("yyyy/MM/dd");  
    			string InterventionParClt = ("SELECT COUNT(SUBSTRING(IN_NUMINTER, 1,10)), IN_NUMINTER, IN_HPASSE, IN_HFACTUR FROM INTERVENTION, CLIENT WHERE INTERVENTION.IN_NUMCLT=CLIENT.C_NUMCLT AND C_NOMCLT = @NomClient AND IN_NUMINTER BETWEEN @DateMin AND @DateMax GROUP BY IN_NUMINTER, IN_HPASSE, IN_HFACTUR");
    command = new SqlCommand(InterventionParClt, connection);
     
    			command.Parameters.Add(paramNomClient);
    			command.Parameters.Add(paramDateMin);
    			command.Parameters.Add(paramDateMax); 
     
    			connection.Open();
    			try
    			{
    				SqlDataAdapter dataAdapter = new SqlDataAdapter(command);
    				DataSet ds = new DataSet();
    				dataAdapter.Fill(ds,"InterventionParClt");
    				dataGrid1.DataSource = ds;
    				dataGrid1.DataMember = "InterventionParClt"; 
    			}
    			catch(Exception ex)
    			{
    				MessageBox.Show(ex.ToString());
    			}
    			finally
    			{
    				connection.Close();
    			}
    Je voudrais tous vous remercier pour toute l'aide que vous m'avez apportés.

    Merci beaucoup!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème requête paramétrée mysqli
    Par Ethylene dans le forum Installation
    Réponses: 5
    Dernier message: 15/05/2006, 16h57
  2. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53
  3. [POO] Problème de paramètre passé par référence
    Par dug dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 31/08/2005, 20h29
  4. [JSP] Problème passage paramètre
    Par besco dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 13/09/2004, 10h15
  5. [SWT] Problème de paramètre GridData
    Par yolepro dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 06/12/2002, 10h37

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