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

VC++ .NET Discussion :

[C++.NET] Relation entre 2 colonnes de mon data


Sujet :

VC++ .NET

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut [C++.NET] Relation entre 2 colonnes de mon data
    Bonjour à tous,
    Alors voila la chose, j'ai un data avec 2 colonnes, je voudrais que lorsque je selectionne (par le code) une valeur se trouvant dans ma 1ere colonne, j'obtiens la valeur de ma 2eme colonne.

    Exemple:
    Si dans ma 1ere colonne j'ai "jean" et bien je veux que cela me renvoit ce qui se trouve dans la 2eme colonne c'est a dire son age "20".

    Faut il faire des relations ou je ne sais quoi?
    Je patauges.
    Comment faire? Avez vous des idees?

    Merci @++

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Alors voila la chose, j'ai un data avec 2 colonnes
    DataSet ?
    DataGridView ?
    DataAdapter ?

  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Excusez moi pour le manque de precision:
    1 dataset
    8 datatables
    1 datagrid

    Ca sera pareil pour toutes les datatables.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 238
    Points : 269
    Points
    269
    Par défaut
    Je pense que tu doit pouvoir récupérer la ligne séléctionné.
    Si tu gère les evenement genre CellClick :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    private void DG_Detail_DP_CellClick(object sender, DataGridViewCellEventArgs e)
    {
         e.rowIndex // le numero de la ligne
    }
    et après il te suffit de récupérer la bonne cellule dans la colonne choisie


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    MaValeur = MonDataGrid.Rows[e.RowIndex].Cells[1];
    Dans l'exemple je récupère la valeur de la seconde colonne.

    Bonne chance

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Ca doit marcher ta solution mais je ne selectionne pas de cellule vu que je travaille sur une autre form que celle ou ce trouve le datagrid.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Points : 89
    Points
    89
    Par défaut
    Ton problème est très vaguement décrit mais si je comprends bien, tu as la valeur d'une colonne et tu veux obtenir la valeur de la 2e colonne correspondate. Si c'est le cas, tu cherches dans la DataTable concernée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataRow dr = TaDataTable.Select("Nom1ereColonne = Valeur1ereColonne");
    object CeQueTuCherches = dr["Nom2emeColonne"];
    Soit plus précis dans tes decriptions stp. J'espère t'avoir aidé, courage !

  7. #7
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Oki merci pour les reponses.
    Avec un exemple concret ca devrait mieux passer.

    Alors j'ai une colonne sappelant "distance" et l'autre "precipitation" apres avoir effectuer certains calculs j'ai un resultat qui correspond a ma distance.
    Si par exemple mon resultat est egal a 15, je dois aller chercher dans la colonne "distance" la valeur correspondant a mon resultat (15) puis prendre la valeur se trouvant dans la colonne "precipitation" en fonction de distance.

    Jespere avoir ete assez clair et precis.

    Merci @++

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    160
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 160
    Points : 89
    Points
    89
    Par défaut
    Très bien.

    J'imagine que ces enregistrements, ces lignes sont stockées dans une de tes DataTables de ton DataSet. Je supposerai que cette DataTable s'appelle dtPrecipitations (à remplacer par le nom que tu as donné, bien sur). Tu n'as qu'a faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataRow drCherchee = dtPrecipitations.Select("distance = 15");
    int iPrecipitationQueTuCherches = Convert.ToInt32(drCherchee["precipitation"]);
    Voilà. J'espère que ca va fonctionner.

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Merci de m'avoir repondu et excusez moi davoir repeter la meme question.
    Faut me comprendre c'est le matin .
    @++

  10. #10
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Alors jai teste ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DataRow *drCherchee = __try_cast<DataRow*>(Table1->Select("Distance=15"));
    float valeurCherchee = Single::Parse(drCherchee->get_Item("Precipitation")->ToString());
    MessageBox::Show(Convert::ToString(valeurCherchee));
    Donc ca compile niquel mais lorsque j'execute l'appli et que je lance cette fonction j'ai une erreur qui apparait et qui dit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Le cast specifie n'est pas valide
    C'est donc une erreur sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataRow *drCherchee = __try_cast<DataRow*>(Table1->Select("Distance=15"));
    Ou est l'erreur?
    Merci

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Bon, ben ... t'es en c++ managé VS2003.
    T'as essayer de pas faire de cast mais de declarer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DataRow[] drCherchee = ....

  12. #12
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Ce que tu mas dis ne genere pas d'erreur mais par contre j'ai cette ligne la
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float valeurCherchee = Single::Parse(drCherchee->get_Item("Precipitation"));
    qui me genere une erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    "System::collections::Ilist::get_item" : impossible de convertir le parametre 1 de 'const char [14]' en 'int'

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float valeurCherchee = Single::Parse(drCherchee["Precipitation"]);
    Regarde un peu les autres post que l'on t'avait mis merci

  14. #14
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    J'avais tester les parenthese car les crochets m generaient des erreurs.

    La en faisant ce que tu dis jai comme erreur sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div style="text-align: left;">float valeurCherchee = Single::Parse(drCherchee["Precipitation"]); </div>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    initialisation : impossible de convertir de const char[14] en int

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    324
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 324
    Points : 343
    Points
    343
    Par défaut
    ok et bien c'est simple fait des test avec les valeurs : 1 et 2.
    Car cela doit correspondre au numéro de ta colonne precipitation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    float valeurCherchee = Single::Parse(drCherchee[1]); // si Distance = colonne 0
    OU
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     float valeurCherchee = Single::Parse(drCherchee[2]); // si Distance = colonne 1

  16. #16
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Y me dit que :
    L'index se trouve en dehors de la limite du tableau

  17. #17
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Apres avoir tester une multitude de chose jen suis toujours au meme point, c'est a dire que j'ai toujours lune des erreurs cites avant quoi que je fasse.

  18. #18
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    J'ai tester un autre truc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <div style="text-align: left;">DataRow *drCherchee = __try_cast<DataRow*>(Table1->Select("Distance=15"));
    DtaColumn * myCol = __try_cast<DataColumn*>(Table1->Select("Precipitation));
    float valeurCherchee = Single::Parse(drCherchee->get_Item(myCol)->ToString());
    MessageBox::Show(Convert::ToString(valeurCherchee));</div>
    Je pensais que ca allait fonctionner mais meme pas, j'ai une erreur a son lancement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    le cast specifie nest pas valide
    Mais lorsque je ne fais pas de cast c'est la folie jai trop trop derreur a la compilation.

    Aidez moi SVP

  19. #19
    Membre régulier Avatar de netomin
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    81
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2005
    Messages : 81
    Points : 102
    Points
    102
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataRow *drCherchee = __try_cast<DataRow*>(Table1->Select("Distance=15"));
    Tu ne peux pas utiliser cette ligne de code avec comme parametre (Table1->Select("Distance=15")) car comme ta du voir dans l'exemple que je t'avais donné le parametre doit être un IEnumerator.

    C'est logique que cela te donne une erreur car le cast est impossible.

    Par rapport à ta question:

    Si tu selectionne une cellule d'un datagrid tu peux faire, par exemple si t'as un Datagrid1:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    DataGridCell __gc *myCell;
    myCell = __box(dataGrid1->CurrentCell);
    
    Et après pour prendre la valeur correspondante dans ta datatable:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    DataRow* myRow = tonDataSet1->TaTable1->get_Rows()->get_Item(myCell->get_RowNumber());
    textBox1->Text=myRow->get_Item(myCell->get_ColumnNumber())->ToString();
    
    Et pour l'autre colonne que t'a besoin de recuperer la valeur c à d "Precipitation" tu met le numero de colonne correspondant à la place de (myCell->get_ColumnNumber()).

    J'éspère avoir été simple.

    à +

  20. #20
    Membre du Club
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 63
    Points
    63
    Par défaut
    Je ne peux pas utiliser mon datagrid pour effectuer ma selection il faut que je travaille directement avec mes 8 datatables.

    Comment je fais puisque avec les datatables je peux pas utiliser "Cell".

Discussions similaires

  1. Réponses: 5
    Dernier message: 29/05/2015, 14h51
  2. [AC-2003] les relations entre tables access avec un code vb.net
    Par Walid(Tun) dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/10/2010, 22h31
  3. [CLR .Net 2]Relation entre GetHashCode() et Equals()
    Par Mose dans le forum Framework .NET
    Réponses: 10
    Dernier message: 24/11/2006, 19h03
  4. Réponses: 4
    Dernier message: 22/08/2006, 11h20
  5. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07

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