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 :

[MFC/Outlook] Erreur lors de la création d'un contact


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut [MFC/Outlook] Erreur lors de la création d'un contact
    Bonjour à tous,
    Je souhaiterais parcourir une base de donnée (Pervasive), trouver un contact particulier dans cette base (par exemple Nom = MARTIN) et créer un contact Outlook en récupérant les informations dans la base.

    Pour ce faire j'utilise les classe CDatabase et CRecordset ainsi que le modèle objet de Outlook.

    Voici mon code (qui n'est pas encore complet) :
    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
     //On parcourt la table pour trouver le contact que l'on veut créer sous Outlook	
            while (!spRecordSetContact.IsEOF())
    	{
    		if(strcmp((const char *)spRecordSetContact.m_ChefSv.Trim(), "Bouli") == 0)
    		{	
    			CContactItem NewContact;
    			CUserProperties NewContactProperties = NewContact.get_UserProperties();
    			AfxMessageBox(_T("Création en cours..."));
    			NewContact.put_LastName(CString(spRecordSetContact.m_NomCnt.Trim()));
    			NewContact.put_Email1Address(CString(spRecordSetContact.m_MelCnt.Trim()));
    			//CUserProperty NewField = NewUserProperties.Add(_T("CodTie"), 1, vVariant, vDisplay); //1 = Type Text
    			//NewContact.Save(); //On sauvegarde le nouveau contact
    			//spItem.Add();
    		}
    		spRecordSetContact.MoveNext();
    	}
    Donc je recherche le contact dont le chef de service est "Bouli", tout marche bien seulement ma table contient 3 contacts, le 2eme contact est celui que je veux créer. Tout fonctionne jusqu'à ce que la ligne en rouge génère une erreur (à l'exécution) lors de l'accès au dernier contact de la table.
    Je ne comprend pas d'où cela peut venir car je parcourt ma table avec le même type de boucle un peu plus haut dans mon programme et cela fonctionne parfaitement.

    Si quelqu'un a une idée.
    Merci.

  2. #2
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Après plusieurs tests, si j'enlève tous le bloc "if", la boucle fonctionne correctement et aucune erreur n'est générée.

    Le recordset n'est utilisé qu'en lecture, je ne pense donc pas que cela vienne de lui.

    A partir du moment ou je ne met pas la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CUserProperties NewContactProperties = NewContact.get_UserProperties();
    En commentaire, l'erreur est générée.

  3. #3
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Si la classe CContactItem est bien la classe de smart pointers, alors NewContact est un smart pointer qui ne pointe sur rien du tout...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  4. #4
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Bonjour,
    Effectivement, seulement je souhaite créer un contact de toute pièce et remplir ses champs grâce à ma table.
    Comment faire alors pour créer un Contact puis l'ajouter à Outlook ?
    Merci.

  5. #5
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Il doit y avoir une méthode New, Create ou Add dans la classe qui fait la liste de contacts, ou un truc du genre. Regarde dans la doc du modèle objet Outlook...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  6. #6
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Bonjour,
    La classe CContactItem ne contient pas de fonction d'ajout ou de création ce qui me semble logique car un contact ne se crée pas tous seul

    J'ai donc regardé la classe du dessus "CItem" qui elle contient une fonction "Add" dont voici le prototype :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    LPDISPATCH CItems::Add(Variant &Type)
    Je suppose donc que le Type est le type d'objet que l'on veut créer, dans notre cas un CContactItem.
    Reste plus qu'a trouvé la valeur correspondante au CContactItem...
    Pour le moment je n'ai rien trouvé dans la msdn..

    Merci.

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 21/02/2006, 16h47
  2. Réponses: 1
    Dernier message: 15/12/2005, 09h45
  3. Réponses: 1
    Dernier message: 26/05/2005, 12h24
  4. message d'erreur lors de la création de la base
    Par ber_jp dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/05/2004, 12h15
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

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