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 :

Problème Base de données et CRecordSet


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut Problème Base de données et CRecordSet
    Bonjour, Voila mon probleme :
    J'ai creer deux tables dans Access pour la gestion d'un bloc-notes:
    - Une table Memo
    (RefMemo : integer , LibMemo : string , RefRubrique : integer)
    - Une table RubriqueMemo
    (RefRubriqueMemo : integer, LibRubriqueMemo : string)

    Dans Visual, j'ai créer une classe CMemoSet , hérité de CRecordset en choisissant les 2 tables en questions dans mon recordset.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    Quand je fais :
    CMemoSet r;
    r.Open(CRecordset::dynaset,"select RefRubriqueMemo from RubriqueMemo");
    ... ca marche
     
    et quand je fais à la place :
    CMemoSet r;
    r.Open(CRecordset::dynaset,"select LibRubriqueMemo from RubriqueMemo");
    ... j'ai un super message bien gentil "Erreur de Récupération de l'enregistrement" Avec une méchante assertion du debugger.
    On dirait que je ne peux pas récupérer un enregistrement s'il y a une donnée de type texte à l'intérieur du jeu demandé dans la requete SQL.

    Je suis vraiment perdu.

    Merci de m'aider[/code]
    Mouche qui pète n'amasse pas mousse
    cv

  2. #2
    mat.M
    Invité(e)
    Par défaut
    Je pense que cela vienne du type de donnée : avec CDaoRecordset il faut utiliser un variant COleVariant ( comme le variant VB )

    COleVariant var;
    try{
    var = m_pRecordset->GetFieldValue("le_nom_de_mon_champs");
    }
    catch (CDaoException* e)
    {
    TraiterErreur (e);
    }
    Puis var.bstrval pour une chaine de car ou var.lval pour un long....

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Lorsque tu as mappé ta table Access dans la classe CMemoSet, le ClassWizard t'a généré une méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void CMemoSet::DoFieldExchange (CFieldExchange *pFX)
    {
     ...
     RFX_Text (pFX,"LibRubriqueMemo",m_LIBRUBRIQUEMEMO);
     ...
    }
    Si tu vérifies la fonction RFX_Text dans l'aide MSDN, tu peux voir qu'il existe un 4e paramètre indiquant la taille maximale de la chaîne de caractère. Cette valeur est à 255 par défaut cela signifie que si le champ de l'enregistrement dépasse 255, tu peux avoir une exception qui est générée.

    Je suppose que dans ta table Access, le champ LibRubriqueMemo est de type MEMO => Il se peut que l'information contenue dépasse les 255 caractères.

    Tu peux toujours essayer de forcer le 4e paramètre de la fonction RFX_Text avec la valeur 10000 ainsi tu pourras récupérer du texte jusque 10000 caractères.

    A NE PAS FAIRE: Mettre une valeur trop grande pour le 4e paramètre car tu plantes ta mémoire. J'ai déjà essayé d'y mettre 4000000000 et la fonction RFX_Text a tenté d'allouer en interne un CString de 4000000000 de caractères.

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2002
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 12
    Points : 7
    Points
    7
    Par défaut
    Merci beaucoup pour ta réponse, c'est sympa.

    Je vais essayer ca ..
    Mouche qui pète n'amasse pas mousse
    cv

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

Discussions similaires

  1. Problème Base de données => Listbox
    Par Ardel dans le forum Windows Forms
    Réponses: 9
    Dernier message: 09/04/2009, 11h39
  2. Problème base de donnée
    Par dispa dans le forum Windows Forms
    Réponses: 1
    Dernier message: 22/01/2008, 22h13
  3. problème base de donnée access
    Par Phiss dans le forum ASP
    Réponses: 6
    Dernier message: 21/11/2007, 21h15
  4. Problème base de données Microsoft Jet
    Par lilo415 dans le forum Access
    Réponses: 2
    Dernier message: 10/10/2007, 23h23
  5. Problème Base de donnée
    Par quedudev dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/09/2007, 12h44

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