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

C++/CLI Discussion :

source de donn�es objet


Sujet :

C++/CLI

  1. #1
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    29
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par d�faut source de donn�es objet
    Salut,
    je travaille sur un reportviewer avec Visual Studio 2005 en c++
    J'essaye de cr�e une classe c++ pour pouvoir l'ajouter en tant que nouvelle source de donn�es de type Objet.

    Je n'ai r�ussi qu'a trouver un exemple en C# sur msdn : http://msdn.microsoft.com/fr-fr/libr...92(VS.80).aspx

    Le code se raportant � la classe cod� en C# :
    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
    27
    28
    public class Product
    {
        private string m_name;
        private int m_price;
     
        public Product(string nom, int prix)
        {
            m_name = nom;
            m_price = prix;
        }
     
        public string Nom
        {
            get
            {
                return m_name;
            }
     
        }
     
        public int Prix
        {
            get
            {
                return m_price;
            }
        }
    }
    Quand j'ajoute cette classe en tant que nouvelle source de donn�es de type Objet dans un projet c# sa marche puisque j'ai deux donn�es disponible dans la source de don�es Product (Prix et Nom)


    Maintenant dans un projet c++ je cr�e une classe avec :
    dans le fichier.h :
    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
    #include <string>
    using namespace std;
     
    public class CProduct
    {
    public:
     
    	CProduct(void);
     
    	~CProduct(void);
     
    	int Prix(void);
     
    	string Nom(void);
     
    private:
    	int prix;
    	string nom;
    };
    et dans le fichier.cpp :
    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
    #include "Product.h"
     
    CProduct::CProduct(void)
    {
    }
     
    CProduct::~CProduct(void)
    {
    }
     
    int CProduct::Prix(void)
    {
    	return this->prix;
    }
     
    string CProduct::Nom(void)
    {
    	return this->nom;
    }
    Alors la par contre quand j'ajoute cette classe en tant que nouvelle source de donn�es de type Objet dans mon projet c++ je n'ai pas les deux donn�es Prix et Nom.
    Voila je ne sais pas trop comment m'y prendre ...
    Merci de votre aide !

  2. #2
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    29
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par d�faut
    Je viens de remarquer que en fait en C# Prix et Nom sont des propri�t�es associ�es au attributs m_name et m_price.
    Est il possible de cr�er des propri�t�es en c++ ?

  3. #3
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Pas en C++ natif.
    En C++ pour le framework .Net (Managed C++ ou bien C++/CLI), par contre, aucun probl�me.
    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
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Voici une traduction de la classe en C++/CLI:
    Code C++/CLI : 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
    public ref class Product
    {
    private:
    	System::String ^m_name;
    	int m_price;
     
    public:
    	Product(System::String ^nom, int prix);
     
    	property System::String^ Nom
    	{
    		System::String^ get();
    	}
     
    	property int Prix
    	{
            	int get();
    	}
    };
    Code C++/CLI : 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
    #include "product.h"
    using namespace System;
     
    Product::Product(String ^nom, int prix)
    {
    	m_name = nom;
    	m_price = prix;
    }
     
    String^ Product::Nom::get()
    {
    	return m_name;
    }
     
    int Product::Prix::get()
    {
    	return m_price;
    }
    Je n'ai pas test�, mais il me semble bien que c'est �a...
    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.

  5. #5
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    29
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par d�faut
    oui justement j'�tais sur cette piste du mot clef property
    http://dotnet.developpez.com/faq/cpp...erloadoperator

    c'est super ce site y a plein de chose le seul probl�me c'est de savoir quoi chercher

    merci M�dinoc

    je test �a tout de suite

  6. #6
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    29
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par d�faut
    Bon sa marche tr�s bien c parfait mais j'ai encore des probl�mes pour la suite du code � savoir transformer la classe Merchant vers du c++
    classe Merchant C#:
    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
    public class Merchant
    {
        private List<Product> m_products;
     
        public Merchant()
        {
            m_products = new List<Product>();
            m_products.Add(new Product("Stylo", 25));
            m_products.Add(new Product("Pinceau", 30));
            m_products.Add(new Product("Cahier", 15));
        }
     
        public List<Product> GetProducts()
        {
            return m_products;
        }
    }
    Classe Merchant C++
    fichier.h :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    #include "Product.h"
    using namespace System;
    using namespace System::Collections::Generic;
     
    public ref class Merchant
    {
    private: 
    	System::Collections::Generic::List<Product> m_products;
     
    public: 
    	Merchant(void);
    	System::Collections::Generic::List<Product> GetProducts(void);
    };
    fichier.cpp :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include "Merchant.h"
     
    Merchant::Merchant(void)
    {
    }
     
    System::Collections::Generic::List<Product> Merchant::GetProducts(void)
    {
    	return this->m_products;
    }
    Enfin bref de gros probl�me avec ce List de malheur ...

  7. #7
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    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 397
    Par d�faut
    Code C++/CLI : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #include "Product.h"
     
    public ref class Merchant
    {
    private: 
    	System::Collections::Generic::List<Product^>^ m_products;
     
    public: 
    	Merchant(void);
    	System::Collections::Generic::List<Product^>^ GetProducts(void);
    };
    Code C++/CLI : 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
    #include "Merchant.h"
    using namespace System;
    using namespace System::Collections::Generic;
     
    Merchant::Merchant(void)
    {
    	m_products = gcnew List<Product^>();
    	m_products->Add(gcnew Product("Stylo", 25));
    	m_products->Add(gcnew Product("Pinceau", 30));
    	m_products->Add(gcnew Product("Cahier", 15));
    }
     
    List<Product^>^ Merchant::GetProducts(void)
    {
    	return this->m_products;
    }
    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.

  8. #8
    Membre averti
    Profil pro
    �tudiant
    Inscrit en
    Juin 2008
    Messages
    29
    D�tails du profil
    Informations personnelles :
    �ge : 38
    Localisation : France

    Informations professionnelles :
    Activit� : �tudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 29
    Par d�faut
    Bon voila je suis arriv� au bout, le rapport s'affiche enfin !
    Merci � M�dinoc !!!

    Pour ceux qui ont les m�mes probl�mes et qui auront la chance de tomber i�i :
    Je rappel que c'est pour un projet Windows Form avec Visual Studio et le langage C++ !

    Les liens utiles :
    Infos sur les rapports en local et notamment, la proc�dure � suivre pour ajouter un fichier .rdlc dans un projet Windows C++ non manag� (en fin de page):
    http://msdn.microsoft.com/fr-fr/library/ms251704.aspx

    L'exemple C# que l'on va transposer en C++/CLI :
    http://msdn.microsoft.com/fr-fr/libr...84(VS.80).aspx

    Et enfin la bonne FAQ de Developpez.com sur le C++/CLI :
    http://dotnet.developpez.com/faq/cppcli/


    Petite modif dans
    Merchant.cpp
    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
    #include "Merchant.h"
     
    Merchant::Merchant(void)
    {
        m_products = gcnew List<Product^>();
    	m_products->Add(gcnew Product("Stylo", 25));
    	m_products->Add(gcnew Product("Pinceau", 30));
    	m_products->Add(gcnew Product("Cahier", 15));
     
    }
     
    List<Product^>^ Merchant::GetProducts(void)
    {
    	return this->m_products;
    }
    Dans la classe Form1 :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    private :Merchant^ m_merchant;
    Dans le TODO :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    m_merchant= gcnew Merchant();
    Et dans la m�thode Form1_Load() :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) 
    {
    				 // Bind the Product collection to the DataSource.
    				 this->ProductBindingSource->DataSource=this->m_merchant->GetProducts();
    				 this->reportViewer1->RefreshReport();
    }
    Voila pour le code � rajouter, ensuite il faut suivre la proc�dure pour ajouter le fichier .rdlc dans un projet Windows C++ non manag� (voir lien plus haut) et enfin dans le reportviewer choisir le rapport, si besoin relier les sources de donn�es (en dessous du choix du rapport).
    Normalement on arrive � deux BidingSource celui de la classe Product (ProductBidingSource) et de Form1 (Form1BidingSource).
    Je sais pas trop pourquoi il a besoin de Form1BidingSource mais sans �a le reportviewer n'affiche rien.

    Bon voila l'un dans l'autre �a devrais fonctionner pour vous aussi.
    Sa serait pas mal d'ajouter un tuto pour les reportviewer parque c'est super pratique pour afficher ce qu'on veux (tableau, toute sorte de graphique ...)
    Maintenant je dois adapter �a avec un gros tableau de string en 2D du type string ** on va voir ce que �a donne.

Discussions similaires

  1. Common Language Runtime (CLR) et source de donn�es objet
    Par Sekhmett dans le forum VC++ .NET
    R�ponses: 0
    Dernier message: 24/06/2008, 17h41
  2. R�ponses: 8
    Dernier message: 15/08/2007, 13h07
  3. [CR VS 2005] Source de donn�es Objet .net
    Par Cereal123 dans le forum SDK
    R�ponses: 4
    Dernier message: 08/03/2007, 10h46
  4. Connexion � une source de donn�es pour un objet pivotTable
    Par totocasagrandi dans le forum Access
    R�ponses: 2
    Dernier message: 12/01/2007, 10h45
  5. [Crystal Report 8] cr�er une source de donn�es oracle
    Par Lina dans le forum SAP Crystal Reports
    R�ponses: 4
    Dernier message: 14/11/2002, 13h53

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