loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 2016
-
26 févr. 2008 à 15:16
cs_coq -
1 mars 2008 à 23:44
Bonjour à tous,
J'aimerais réaliser un DataGrid dans lequel se trouverais les 5 dernières interventions du client choisit auparavant.
Je n'ai jamais réalisé de DataGrid donc j'ai besoin de votre aide s'il vous plais.
Je pense avec les tutos que j'ai lu, qu'il serait bien que je réalise un dataSet.
J'aimerais avoir votre aide sur le procédé de comment réaliser et surtout remplir mon dataGrid??
J'ai essayé quelque chose mais ça fonctionne pas :
CODE :
string
requete ("SELECT TOP 5 INTERVENTION.IN_NUMINTER, CONTACT.CT_NOMCTACT, MACHINE.M_NOMMAT FROM INTERVENTION INNER JOIN MACHINE ON INTERVENTION.IN_IDMAT MACHINE.M_IDMAT AND INTERVENTION.IN_NUMCLT = dbo.MACHINE.M_NUMCLT INNER JOIN CONTACT ON MACHINE.M_NUMCTACT = CONTACT.CT_NUMCTACT WHERE INTERVENTION.IN_NUMCLT = '" + NumClt.Text + "' ORDER BY INTERVENTION.IN_NUMINTER DESC");connection =
new SqlConnection("Data Source=DIST-5B8D87E3A9;Initial Catalog=DistribInfo;Integrated Security=SSPI");connection.Open();
try{
SqlDataAdapter dataAdapter new SqlDataAdapter(requete,connection);DataSet ds
lassaad83
Messages postés148Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention 1 décembre 2009 28 févr. 2008 à 15:33
Null est l'absence de valeur, donc une initialisation comme :
string DateCharge="<NULL>";
string Depo="<NULL>";
ne te servira pas a grand chose !
Aprés je pense que ta requete sera mieu si tu l'écris de la sorte lorsque le checked est a False
new SqlCommand("UPDATE INTERVENTION SET IN_PRICHARG Null WHERE IN_NUMINTER '" + NumIntervention.Text + "'", connection);
Ps: n'oublie pas de cloturer le sujet quand ça sera ok
lassaad83
Messages postés148Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention 1 décembre 2009 26 févr. 2008 à 15:48
Tout simplement il faut que tu donne à la propriété DataSource de ton DataGrid le DataSet que tu vient de remplir par la méthode Fill() du dataAdapter ...
SqlDataAdapter dataAdapter =
new
SqlDataAdapter(requete, connection);
DataSet ds =
new
DataSet();
dataAdapter.Fill(ds,
"Nom_Table"); //je te conseil de donner un nom au jeux de résultats de ta requete SELECT
DataGrid1.DataSource = ds.Tables[
"Nom_Table"]; //Affecte la source a ton DataGrid
Mais je viens d'essayer cela : SqlDataAdapter dataAdapter new SqlDataAdapter(requete, connection);DataSet ds
new DataSet();dataAdapter.Fill(ds,"requete");
//je te conseil de donner un nom au jeux de résultats de ta requete SELECTdataGrid1.DataSource = ds.Tables["requete"];
//Affecte la source a ton DataGriddataGrid1.DataBindings();
//Rempli le datagrid
L'erreur est la suivante : " C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\SuiviIntervention.cs(243): 'System.Windows.Forms.Control.DataBindings' désigne 'propriété' où 'méthode' était attendu
".
Il me souligne "DataBindings".
Mais si je met "DataBind()" au lieu de "DataBlindings", l'erreur est la suivante : "C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\SuiviIntervention.cs(243): 'System.Windows.Forms.DataGrid' ne contient pas de définition pour 'DataBind'
".
Comment je peux faire??
P.S. : que veux tu dire par "je te conseil de donner un nom au jeux de résultats de ta requete SELECT"??
Merci d'avance!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
lassaad83
Messages postés148Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention 1 décembre 2009 26 févr. 2008 à 16:17
Attention c'est DataGrid1.DataBind() et non pas dataGrid1.DataBindings();
Concernant ma remarque, en fait lorsque tu récupere le résultat de ton SELECT dans le DataSet il serait préférable de lui donné un nom comme un alias. Le DataSet est une mini Base de Donné en mémoire, donc tu peut avoir plusieur table dans un seul DataSet. En donnant des nom a ces Tables tu t'y retrouvera facilement surtout si tu compte en stocké plusieurs dans le DataSet.
dataAdapter.Fill(ds,"Five_Last_Intervention"); //designe le jeux de résultat de ta requetes des 5 dernières interventions
dataAdapter.Fill(ds,"Client"); //designe le jeux de résultat d'une requetes qui liste les Clients
//Après si tu veux par exemple que ton DataGrid affiche les 5 dernières interventions tu devra lui affecter comme source :
dataGrid1.DataSource = ds.Tables["Five_Last_Intervention"];
// si tu veux afficher le nom des Client tu lui affectera :
dataGrid1.DataSource = ds.Tables["Client"];
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 26 févr. 2008 à 16:24
Pour revenir sur ta remarque , ce que tu ma dit, revien au même que d'avoir mit requete?? Certe "Five_Last_Intervention" est plus explicite mais si je met ça faut que je mette : Five_Last_Intervention = ("SELECT TOP 5 INTERVENTION.IN_NUMINTER, CONTACT.CT_NOMCTACT, MACHINE.M_NOMMAT FROM INTERVENTION INNER JOIN MACHINE ON INTERVENTION.IN_IDMAT = MACHINE.M_IDMAT AND INTERVENTION.IN_NUMCLT = dbo.MACHINE.M_NUMCLT INNER JOIN CONTACT ON MACHINE.M_NUMCTACT = CONTACT.CT_NUMCTACT WHERE INTERVENTION.IN_NUMCLT = '" + NumClt.Text + "' ORDER BY INTERVENTION.IN_NUMINTER DESC");
??
Mais mon DataGrid se nomme dataGrid1 donc je devrais plutot mettre "DataGrid1.DataBind()"??
Mais si je met cela "dataGrid1.DataBind();
" , le problème est le suivant : C:\Documents and Settings\Propriétaire\Mes documents\Visual Studio Projects\SuiviClient_Distrib'Info\SuiviIntervention.cs(165): 'System.Windows.Forms.DataGrid' ne contient pas de définition pour 'DataBind'
??
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 26 févr. 2008 à 17:30
Par contre je voulais savoir s'il étais possible qu'en cliquant sur une ligne du DataGrid, (par exemple on clique le NumInter) ben que ce NumInter soit affiché en dessous du DataGrid??
lassaad83
Messages postés148Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention 1 décembre 2009 26 févr. 2008 à 19:08
Oui c'est possible, mais perso le DataGrid ... ça me rappel de très mauvais souvenir ...
Pour faire ce que tu veux, il faudra que tu passe par l'abscise, l'ordonnée retourné par le click de la souri et faire plein de bricolage sans dessus dessous pour pouvoir recuperer le text de ta cellule...
Tu est sur VS 2003 ou 2005 ?
Si tu est sur VS 2005 je te consiel d'utiliser plutot le DataGridView, il faut savoir que le DataGrid n'a pas été conservé dans le Framework 2.0 tout simplement pour fournir une compatibilité ascendante avec l'ancienne version et qu'il reste très limiter en comparaison à ces succésseurs.
lassaad83
Messages postés148Date d'inscriptionvendredi 28 avril 2006StatutMembreDernière intervention 1 décembre 2009 27 févr. 2008 à 10:38
La maintenance du code été difficile, chaque modification chamboulait tout ce qui été fait auparavant bien entendu c'était pas toujours le cas...
Pour ce que tu veut fairte il faut que tu implémente l'evenement CurrentCellChanged de ton dataGrid et voila comment afficher dans un label la cellule selectionnée lors de ton click :
Mais 2 problème :
* Dés que j'ai mon DataGrid d'affiché, lorsque je clique sur la première ligne, ça me l'affiche pas dans le label. Mais si je veux insérer la première ligne dans le label faut ke je clike sur la deuxième(ou la troisième..lignes) puis ensuite ke je reclike sur la première. Alors que je souhaiterais pouvoir cliké sur la première sans avoir a aller sur une autre avant. Comment puis-je faire??
* Je souhaiterais pouvoir juste cliquer sur les NumInterventions(première colonne du datagrid) Comment je peux faire pour faire cela??
merci d'avance pour ton aide et merci pour l'aide ke tu ma déja apporté.
loic20h28
Messages postés207Date d'inscriptionmardi 19 juin 2007StatutMembreDernière intervention22 février 20162 27 févr. 2008 à 11:30
Lorsque je clique sur la première intervention, il m'affiche rien, ça sélectionne juste.
Par contre si je clique sur le NomCtact, il m'affiche l'emplacement (ligne n°0, colonne : 2, valeur : vivien).