|
Trouver une ressource
Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !
Sujet : Problème de requête paramétrée [ Base de données / ADO.NET ] (loic20h28)
Informations & options pour cette discussion
|
mardi 12 février 2008 à 10:57:43 |
Problème de requête paramétrée

loic20h28
|
Bonjour tout le monde, Je souhaite réaliser une requête paramétrée. J'ai réalisé quelque chose mais malheureusement cela ne fonctionne pas. EXPLICATION : Le code ci-dessous doit me permettre d'afficher le statut correspondant au client choisi précédemment c'est à dire que je choisi le client puis ensuite, le statut est afficher dans ma combo qui se nomme StatuClient. Pourquoi une combo?? pour que si le client n'existe pas, on le créé et kon puise choisir son statut. CODE : SqlConnection connection; SqlCommand command; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt");command = new SqlCommand(requete,connection);command.Parameters.Add("@NomClt", SqlDbType.VarChar); command.Parameters["@NomClt"].Value = NomClient; SqlDataReader rader = command.ExecuteReader(); try{ while (rader.Read()) StatuClient.Items.Add(rader.GetString(0)); } catch(Exception ee){ MessageBox.Show(ee.Message); } finally{ connection.Close(); } Lorsque je lance mon application (sous VisualStudio.net 2003) , je choisi le client et ensuite, il m'affiche le message d'erreur suivant : " Une exception non gérée du type 'System.InvalidCastException' s'est produite dans system.data.dll Informations supplémentaires : L'objet doit implémenter IConvertible. "
et il me surligne en vert le code suivant : "SqlDataReader rader = command.ExecuteReader();"
merci d'avance pour votre aide.
|
|
|
|
mardi 12 février 2008 à 11:14:13 |
Re : Problème de requête paramétrée

loic20h28
|
Je vient de tester la requête sous l'analyseur de requête de SqlServer grâce au debuggage et a l'espion (ajouter un espion) mais le problème c'est qu'il ne change pas @nomclt avec le résultat choisi précédement c'est à dire que @nomClt reste @nomClt.
Il vient peut être de la mon problème?? Qu'en pensez-vous??
Faut savoir également que quand j'ai voulu tester avec l'analyseur de requête, il m'a affiché : [QUOTE]Serveur : Msg 137, Niveau 15, État 2, Ligne 1 La variable @nomclt doit être déclarée. [/QUOTE]
comment je peux résoudre ce problème d'après vous??
merci d'avance!!
|
|
|
|
jeudi 14 février 2008 à 09:52:22 |
Re : Problème de requête paramétrée

loic20h28
|
Bonjour tout le monde, Voila j'ai continué malgrés que personne a pu m'aider mais malheureusement cela ne fonctionne toujours pas. CODE : SqlConnection connection; SqlCommand command; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");connection.Open(); string requete = ("SELECT C_STATUCLT FROM CLIENT WHERE CLIENT.C_NOMCLT= @NomClt");command = new SqlCommand(requete,connection);command.Parameters.Add("@NomClt", SqlDbType.Char, 20); command.Parameters["@NomClt"].Value = NomClient.Items.ToString(); SqlDataReader rader = command.ExecuteReader(); try{ while (rader.Read()){ stringvalue = null;// On part du principe que le champ à l'index 0 est de type char dans la baseif (rader.IsDBNull(0) == false){ value = rader["C_STATUCLT"].ToString();StatutClient.Items.Add( value);} } } catch(Exception ee){ MessageBox.Show(ee.Message); } finally{ connection.Close(); }
Le problème c'est que ça m'affiche rien dans ma combo StatutClient.
merci d'avance pour votre aide.
|
|
|
|
vendredi 15 février 2008 à 14:49:46 |
Re : Problème de requête paramétrée

loic20h28
|
Bonjour tout le monde, j'ai changé de requête paramétré mais toujours bloqué. Enfin le problème est devenu plus clair dans ma tête. CODE :private void Valider_Click(object sender, System.EventArgs e){ SqlConnection connection; connection = new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");connection.Open(); try{ SqlParameter paramNInter = new SqlParameter("@NumInter", SqlDbType.VarChar, 15);paramNInter.Value = NumIntervention; SqlParameter paramNClt = new SqlParameter("@NumClt", SqlDbType.VarChar, 13);paramNClt.Value = NumClt; SqlParameter paramNClt1 = new SqlParameter("@NumClt1", SqlDbType.VarChar, 13);paramNClt1.Value = NumClt; SqlParameter paramNMat = new SqlParameter("@NumMachine", SqlDbType.Int, 13);paramNMat.Value = NumMachine; SqlParameter paramResInter = new SqlParameter("@RaisonInter", SqlDbType.VarChar, 250);paramResInter.Value = RaisonInter; SqlParameter paramLieInter = new SqlParameter("@LieInter", SqlDbType.Text);paramLieInter.Value = LieuInter.SelectedItem.ToString(); SqlParameter paramDepo = new SqlParameter("@Depositaire", SqlDbType.Char, 50);paramDepo.Value = Dépositaire.SelectedItem.ToString(); SqlParameter paramRecep = new SqlParameter("@Receptionneur", SqlDbType.Char, 20);paramRecep.Value = Réceptionneur.SelectedItem.ToString(); SqlParameter paramDPrisCharg = new SqlParameter("@DatePrisEnCharge", SqlDbType.DateTime, 8);paramDPrisCharg.Value = DatePrisEnCharge; string sql = string.Format("INSERT INTO INTERVENTION(IN_NUMINTER, IN_NUMCLT, IN_M_NUMCLT, IN_IDMAT, IN_RESINTER, IN_LIEINTER, IN_DEPOMAT, IN_RECEPMAT, IN_PRICHARG) VALUES({0}, {1}, {2}, {3}, {4}, {5}, {6}, {7})", paramNInter.ParameterName, paramNClt.ParameterName, paramNClt1.ParameterName, paramNMat.ParameterName, paramResInter.ParameterName, paramLieInter.ParameterName, paramDepo.ParameterName, paramRecep.ParameterName, paramDPrisCharg.ParameterName); SqlCommand cmd = new SqlCommand(sql.ToString(), connection);cmd.Parameters.Add(paramNInter); cmd.Parameters.Add(paramNClt); cmd.Parameters.Add(paramNClt1); cmd.Parameters.Add(paramNMat); cmd.Parameters.Add(paramResInter); cmd.Parameters.Add(paramLieInter); cmd.Parameters.Add(paramDepo); cmd.Parameters.Add(paramRecep); cmd.Parameters.Add(paramDPrisCharg); cmd.ExecuteNonQuery(); } catch(Exception ex){ MessageBox.Show(ex.Message); } finally{ connection.Close(); } }
J'ai besoin de 3 renseignements : * Lorsqu'un champ dans la base est de type numéric, quelle type dois-je donner au paramètre au niveau du 'sqlDbType' ??? * Le NumIntervention est un label dans mon application donc pour qu'il prenne la valeur, que dois-je mettre?? pour l'instant j'ai : Code : SqlParameter paramNInter = new SqlParameter("@NumInter", SqlDbType.VarChar, 15);
paramNInter.Value = NumIntervention;* La DatePrisCharg me renvoie "02/15/2008", comment puis-je faire pour que ça devienne "12/02/2008"?? Code : SqlParameter paramDPrisCharg = new SqlParameter("@DatePrisEnCharge", SqlDbType.DateTime, 8);
paramDPrisCharg.Value = DatePrisEnCharge.Format;Je sait qu'il existe Format(mais ça renvoie short) et il existe FormatChanged mais il me dise qu'il faut que je le mette à guche d'un = ou d'un +, comment puis-je faire dans mon programme??
merci d'avance pour votre aide!!
|
|
|
|
dimanche 17 février 2008 à 01:37:16 |
Re : Problème de requête paramétrée

coq
|
Salut, Là à mon avis il vaut mieux que tu fasses une pause et que tu te penches sur la doc de ce que tu utilises, tu perdrais beaucoup moins de temps qu'en te lancant directement la tête dans le guidon. Si je comprend bien, NomClient est une instance de la classe ComboBox, et je vois mal comment le code de la classe SqlParameter saurait comment aller chercher la chaine de caractère contenant le nom du client, surtout que la partie accès aux données du framework ne dépend heureusement pas du code de présentation. "Lorsqu'un champ dans la base est de type numéric, quelle type dois-je donner au paramètre au niveau du 'sqlDbType' ???" => Logiquement, numeric est à associer à un type Decimal, voir doc SQL Server et doc de l'énumération SqlDbType "Le NumIntervention est un label dans mon application donc pour qu'il prenne la valeur, que dois-je mettre?? pour l'instant j'ai :" => Pour NumIntervention, même réflexion que pour NomClient : le paramètre attend la valeur dans le bon type, à toi de l'extraire. "La DatePrisCharg me renvoie "02/15/2008", comment puis-je faire pour que ça devienne "12/02/2008"?? " => Lire la doc de DateTimePicker.Format, puis celle de DateTimePicker pour trouver comment récupérer la date sélectionnée. "Je sait qu'il existe Format(mais ça renvoie short) et il existe FormatChanged mais il me dise qu'il faut que je le mette à guche d'un = ou d'un +, comment puis-je faire dans mon programme??" => FormatChanged est un event ! Se renseigner sur ce que sont les évènements, et lire la doc de DateTimePicker. /* coq MVP Visual C# CoqBlog*/
|
|
|
|
mardi 19 février 2008 à 09:47:22 |
Re : Problème de requête paramétrée

loic20h28
|
Je récupére la bonne date sauf que ça me met "02/19/2008" au lieu de "19/02/2008" c'est à dire que je veux que dans ma base, il me le mete de type "jour/mois/année" et non de type "mois/jours/années". J'ai lu quelque pars qu'en laissant mon code de cette manière : SqlParameter paramDPrisCharg = new SqlParameter("@DatePrisEnCharge", SqlDbType.DateTime, 8);paramDPrisCharg.Value = DatePrisEnCharge;
dans ma base il me l'affichera normalement. Qu'en penses tu?? Mais j'insiste sur le fait qu'il me renvoie bien les valeurs, donc tu pense que même que le problème vient de la??
Merci d'avance!!
|
|
|
|
jeudi 21 février 2008 à 09:18:28 |
Re : Problème de requête paramétrée

loic20h28
|
Réponse acceptée !
C'est bon j'ai réussit en refaisant paramètre par paramètre. merci quand même coq. voici le code : // Enregistrement des informations de l'intervention SqlParameter paramNInter = new SqlParameter("@NumInter", SqlDbType.VarChar, 15);paramNInter.Value = NumIntervention.Text; SqlParameter paramNClt = new SqlParameter("@NumClt", SqlDbType.VarChar, 13);paramNClt.Value = NumClt.Text; SqlParameter paramNClt1 = new SqlParameter("@NumClt1", SqlDbType.VarChar, 13);paramNClt1.Value = NumClt.Text; SqlParameter paramIdMat = new SqlParameter("@IdMat", SqlDbType.Decimal, 9);paramIdMat.Value = decimal.Parse(NumMachine.Text);SqlParameter paramResInter = new SqlParameter("@ResInter", SqlDbType.VarChar, 250);paramResInter.Value = RaisonInter.Text; SqlParameter paramLieuInter = new SqlParameter("@LieuInter", SqlDbType.Text, 16);paramLieuInter.Value = LieuInter.SelectedItem.ToString(); string strSql = string.Format("INSERT INTO INTERVENTION(IN_NUMINTER, IN_NUMCLT, IN_M_NUMCLT, IN_IDMAT, IN_RESINTER, IN_ETAINTER, IN_LIEINTER) VALUES({0},{1},{2}, {3}, {4}, 'demande', {5})", paramNInter.ParameterName, paramNClt.ParameterName, paramNClt1.ParameterName, paramIdMat.ParameterName, paramResInter.ParameterName, paramLieuInter.ParameterName);SqlCommand cmd = new SqlCommand(strSql, connection);cmd.Parameters.Add(paramNInter); cmd.Parameters.Add(paramNClt); cmd.Parameters.Add(paramNClt1); cmd.Parameters.Add(paramIdMat); cmd.Parameters.Add(paramResInter); cmd.Parameters.Add(paramLieuInter); cmd.ExecuteNonQuery(); } cordialement.
|
|
|
Cette discussion est classé dans : connection, client, command, rader, nomclt
Répondre à ce message
Sujets en rapport avec ce message
C# - remplir textbox avec requete sql [ par eowene ]
Bonjour à tous. Je suis débutante en C# et je dois avouer que j'ai pas mal de soucis pour faire des petite choses. Je travaille sur Pocket PC. Bref, l
Requête parametré et myssql [ par aquibad ]
Bonjour à tous,Mon pb est le suivant : J'essai de faire une composant d'accés aux base de données.Toutes les commandes passent bien (connection, comma
Serveur/client [ par Florentcrochet ]
Bonjour ,Mon but est de creer une connection entre un serveur et un client permettant d'envoyer et recevoir des messages.Avec le modèle asynchrone , j
Récupérer image (HugeBlob) dans une bd Oracle [ par neo557 ]
Bonjour, Mon problème est le suivant : je dois récupérer une image contenue dans une BD oracle sous le format HUGEBLOB. J'ai tenté ceci : m_db = <FONT
[VS2003] Problème de remplissage d'un dataGrid [ par loic20h28 ]
Bonjour tout le monde,Voila, j'ai un dataGrid (représentant des articles dont l'entreprise à eu besoin pour l'intervention) qui se remplit de deux man
la requette d'insertion [ par Marakima ]
Bonsoir tous le monde , Je suis débutante en C#, alors je réalise une application en C# et MySql,j'ai effectuer la requette de selection dont voiçi le
Insertion de résultat de comboBox,TextBox dans table [ par loic20h28 ]
Bonjour à tous,Je réalise mon application sous Visual Studio.NET 2003 et ma base de données sous SqlServer2000.Voila j'ai des comboBox et des TextBox
thread dynamique (a la volée) [ par metos ]
salut à tout le monde,est-il possible de créer des thread dynamiquement. en fait j'aurais besoin de créer plusieurs thread identiques mais je ne sais
relation [ par laurent180 ]
Bonjour,J'aimerai savoir si qq a un exemple. Je n'arrive pas a afficher une relation de table.j'ai ma 1 table "client" et ma 2 table "facture"et j'aim
Envoyer le contenu d'un edit [ par underdog08 ]
Bonjour,J'ai besoin de realiser un serveur client udp et c'est la premiere foi que je programme en c#!J'arrive à transmettre des données lors de la c
Livres en rapport
|
Téléchargements
Logiciels à télécharger sur le même thème :
|