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

MFC Discussion :

ADO


Sujet :

MFC

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 15
    Points
    15
    Par défaut ADO
    Bonjour,

    je suis débutante en C++, j'ai développé un petit pg permettant d'accéder àune base de données, sous visual C++, et d'effectuer des requêtes à l'aide de l'encapsulation de ADOLib.
    J'ai fait une fonction qui effectue un select dans une table, quand je veux récupèrer un seul élement y'a pas de problème j'utilise le GetFieldVal, mais si je veux que ette fonction retourne un tableau,comment dois-je faire?
    est-ce possible de récupérer les informations directement sous forme de tableau avec l'encaplusation de ADOLib?

    merci de votre réponse

  2. #2
    pdl
    pdl est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2002
    Messages : 30
    Points : 33
    Points
    33
    Par défaut
    Salut,

    Heu non ADOLib ne permet pas de renvoyer un tableau, je n'en vois pas vraiment l'intérêt car tout est contenu dans un recordset que tu peux parcourir. Et si tu veux vraiment un tableau, alors tu peux toujours le construire toi-même.

    Bon si tu ne vois pas comment fais moi signe et j'essaierai de te guider.

    bàt,
    Pierre

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    Bonjour

    Si tu veux recuperer tous tes elements selectionné dans un tableau ajoute une listcontrol dans une de tes fenetre et utilise la fonction

    FetchInListCtrl(&m_listbase); // m_listbase est la variables members de la list.

    Cette fonction dans ADOlib va directement recuperer le nom de chaque colonne et va mettre a jour la list control avec tous les elements ainsi que le nom des colonnes

    Cordialament

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 15
    Points
    15
    Par défaut
    En fait, le but est de créer une DLL, j'avais commencé à faire un pg pour tester dans un premier temps les fonctions qui feront partie de la DLL.
    et donc la DLL doit retourner au programme principal le résultat de la requête qui n'est pas une simple chaine de caractère mais se présente sous forme de tableau, c'est pour cela que j'avais penser stocker les infos dans un tableau. mais peut ête y'a t'il une autre solution pour retourner ces informations?

    si tu pouvais me guider un peu car je ne m'y connais pas beaucoup, ca serait vraiment sympa.

    merci.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    Avec ADOlib en direct tu ne pourras pas retourner un tableau de CString ou de char comme je pense que tu le veux.

    Soit dans ta DLL tu forme un tableau en recuperant chacun de tes element avec des GetFieldVal() puis tu retourne ce tableau.

    Tu peut essayer aussi de chercher vers la classe CList sur la MSDN pour renvoyer une liste d'element.

    Une autre possibilité est d'utiliser dans ta DLL la fonction ToFile de la classe ADOlib qui va te cree un fichier texte de tous les elements du SELECT séparer avec un ";" , de plus si tu passes comme argument au ToFile un header à 0 il ne mettra pas le nom de tes colonnes.
    Il te restera a faire une lecture de ce fichier texte dans ton prog principale pour recuperer tes data.

    Cordialement

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 15
    Points
    15
    Par défaut ADO tableau
    Je ne peux utiliser le fichier texte, car la personne qui va utiliser la DLL préfère un tableau, (évidemment), quelqu'un peut m'aider pour construire ce tableau avec le GetFieldVal?
    désolée mais je suis débutante, je regarde des exemples dans les bouquins mais ce n'est pas toujours tres clair.

    Merci.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Points : 347
    Points
    347
    Par défaut
    Si tu connais le nombre max d'item que tu dois pouvoir recuperer tu peux essayer ceci

    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
    #define  nbcolonne  10
    #define nbligne  10
     
    CString my_tab[nbcolonne * nbligne];
    CString strbuf;
     
    for (int i=0;i<nbligne;i++)
    {
    mySel1->GetFieldVal("nom colonne 1",strbuf);
    my_tab[i*nbcolonne] = strbuf;
     
    mySel1->GetFieldVal("nom colonne 2",strbuf);
    my_tab[i*nbcolonne+1] = strbuf;
     
    ....
     
    mySel1->GetFieldVal("nom colonne 10",strbuf);
    my_tab[(i*nbcolonne+9]
    }

    Tu as ainsi un tableau de CString a indexe en fonction de ton nombre de ligne ou de colonne

    Si tu n'as pas la taille au départ du devra alloue dynamiquement ton tableau avec un malloc ou new


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 35
    Points : 15
    Points
    15
    Par défaut ADO tableau
    ok,
    merci beaucoup, je vais essayer de suite!

    par contre j'ai un autre pb... et oui, je ne suis vraiment pas douée en C!

    je voudrais que ma fonction retourne au programme principal le tableau, j'ai essayé en utilisant les réferences mais je n'y arrive pas et par les pointeurs, j'ai des messages d'erreur,
    voilà ce que j'ai écrit:

    dans le programme principal:
    CString tableau[nb-col, nb_ligne];
    // appel de la fct IMU_surveillance_gtc(5,&tableau);

    et dans la fonction:
    void surveillance(int num_demande, CString* tableau[nb_ligne,nb_col])

    est-ce correct?
    sinon comment faire en pasant par les réferences?

    PS: petite question: il est plus préférabl de renvoyer les valeurs au pg principal en utilisant les pointeurs ou les réferences?

    merci beaucoup pour votre aide.

Discussions similaires

  1. Réponses: 31
    Dernier message: 30/03/2006, 16h57
  2. [ADO] Tester l'existence d'une table
    Par nd25 dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 05/09/2002, 13h55
  3. [ADO] Constantes des types de champ
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 05/09/2002, 11h08
  4. [MFC](encapsulation ADO) ou placer le code
    Par philippe V dans le forum MFC
    Réponses: 2
    Dernier message: 13/06/2002, 14h58
  5. [MFC] ADO connection
    Par philippe V dans le forum MFC
    Réponses: 3
    Dernier message: 10/06/2002, 07h36

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