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] Probleme comprehension de code


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] Probleme comprehension de code
    Bonjour à tous,
    Alors voila je n'arrive pas a comprendre cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tab_recup_data[i]=*dynamic_cast<__box*>(myRow->Item[myCol]->ToString());
    En fait je sais pas du tout dans quel ordre il me met mes valeurs dans le tableau et comment puis je y acceder.

    Je joins tout le reste du code pour une meilleure comprehension.
    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
     
    private:
     void PrintRows(DataSet* myDataSet){
     
         int i=0;
         float tab_recup_data __gc[] = new float __gc[100];
        // For each table in the DataSet, print the values of each row.
     
        System::Collections::IEnumerator* myEnum = myDataSet->Tables->GetEnumerator();
        while (myEnum->MoveNext())
        {
           DataTable* thisTable = __try_cast<DataTable*>(myEnum->Current);
           // For each row, print the values of each column.
           System::Collections::IEnumerator* myEnum1 = thisTable->Rows->GetEnumerator();
           while (myEnum1->MoveNext())
           {
              DataRow* myRow = __try_cast<DataRow*>(myEnum1->Current);
              System::Collections::IEnumerator* myEnum2 = thisTable->Columns->GetEnumerator();
              while (myEnum2->MoveNext())
              {
                 DataColumn* myCol = __try_cast<DataColumn*>(myEnum2->Current);
                tab_recup_data[i]=*dynamic_cast<__box*>(myRow->Item[myCol]->ToString());
                 i++;
              }
            }
        }

  2. #2
    Xno
    Xno est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 83
    Points
    83
    Par défaut
    Salut,

    Pouaaah, du C++ managé, ce n'est pas ma tasse de thé, mais je vais essayer de te répondre...

    D'après le code, tu cycles les tables existantes à partir d'un dataset, puis les lignes, et enfin les colonnes.

    Ce qui est bizarre, c'est que tu fasses un ToString() sur la valeur du champ que tu récupères pour ensuite le sauvegarder dans le tableau de flottants tab_recup_data.

    Maintenant tout dépend ce que tu veux faire. Si tu veux récupérer un seul champ mais de toutes les lignes, il ne faut pas garder la boucle sur les colonnes, mais la boucle sur les lignes, et accéder à la valeur du champ via son nom:

    int tab_recup_data __gc[] = new int __gc[ 100 ];

    DataRow* myRow = __try_cast<DataRow*>(myEnum1->Current);
    System::Collections::IEnumerator* myEnum2 = thisTable->Columns->GetEnumerator();
    while (myEnum2->MoveNext())
    {
    tab_recup_data[ i ] = *<dynamic_cast<__box int*>myRow->Item[ S"NomDuChamp" ];
    i++;
    }
    Dans cet exemple, le champ "NomDuChamp" est de type int.

    Regarde voir cette exemple de Microsoft si ça peut t'aider: http://support.microsoft.com/default...%3Bfr%3B818779

  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
    Bah en fait je veux recuperer chaque valeur de chaque cellule, je pense que c'est un bon moyen pour le faire non???

  4. #4
    Xno
    Xno est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 71
    Points : 83
    Points
    83
    Par défaut
    Pour la récupération de tous les champs, tu peux utiliser un DataGrid pour visualiser une table entière.

    Pour récupérer les lignes et les colonnes, il faut faire un tableau 2D, genre

    String* tab_recup_data __gc[,] = new String* __gc[ 100, 100 ];

    Ensuite, tu ajoutes une variable j pour cycler sur les lignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     int j = 0;
     
    while( myEnum1->MoveNext() )
    {
     DataRow* myRow = __try_cast<DataRow*>( myEnum1->Current );
     System::Collections::IEnumerator* myEnum2 = thisTable->Columns->GetEnumerator();
     while( myEnum2->MoveNext() )
     {
       DataColumn* myCol = __try_cast<DataColumn*>(myEnum2->Current);
       tab_recup_data[ i, j ] = *dynamic_cast<__box*>( myRow->Item[ myCol ]->ToString() );
       i++;
     }
     j++;
    }
    Ce code est à prendre avec des pincettes car, d'une part je ne l'ai pas testé et d'autre part, je ne suis pas un habitué du code managé.

    Pour les champs, tu dois les récupérer dans l'ordre où ils sont affichés dans ton designer de base de données. Pour les lignes, je ne peux pas te dire comment c'est classé: peut-être en ordre croissant en fonction du premier champ disponible...?

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

Discussions similaires

  1. [Débutant] VB.NET probleme dossier code source sur disque reseau
    Par ViniVidiVici dans le forum VB.NET
    Réponses: 8
    Dernier message: 31/10/2011, 16h06
  2. Probleme de comprehension de code
    Par joxbl dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2006, 19h58
  3. [VB.NET] Probleme de création d'une picturebox dans le code
    Par stringman62 dans le forum Windows Forms
    Réponses: 5
    Dernier message: 07/02/2006, 16h56
  4. [VB.Net] Probleme popup code behind
    Par balibo dans le forum ASP.NET
    Réponses: 19
    Dernier message: 17/10/2005, 12h22
  5. [VB.Net] Probleme avec dialogues (confirm et alert)
    Par crackity_jones666 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 26/11/2003, 22h05

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