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 :

L'élément DataSets n'existe pas


Sujet :

MFC

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut L'élément DataSets n'existe pas
    Bonjour,
    Je veux ajouter un élément datasets (.xsd) à mon projet MFC mais lorsque je clique Ajouter-> Nouvel élément ->Données, je ne trouve pas l'élément Datasets.
    En faite j'ai besoin de cette élément pour que je puisse remplir mon rapport (rdlc) à partir des valeurs que je le calcule dans la classe client.
    Y a t il qqun qui peut m'aider.
    Merci pour vos aides

  2. #2
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Crée un projet CLR et non MFC par exemple un Windows Forms Control Library.

  3. #3
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Ensuite tu ajoute un nouvel item 'Report' fichier *.rdlc

    Tu designes ton fichier Rapport.rdlc dans ton projet CLR

    Ensuite tu indiques à ton programmes MFC le chemin d'accès physique de ton rapport.

    Toujours dans ton Windows Forms Control Library tu dragues sur la surface de ton user contrôle le contrôle .NET ReportViewer sous la catégorie Reporting

    C'est ce user contrôle que tu vas aller coller dans ta boite de dialogue ou le connecter à ta vue MFC.

    Ensuite tu alimentes tes datasets de ton report par du code C++/CLI dans ton projet MFC et tu indiques à ton ReportViewer le ReportPath de ton *.rdlc.
    Et le tout est joué!!!

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Ensuite tu alimentes tes datasets de ton report par du code C++/CLI dans ton projet MFC et tu indiques à ton ReportViewer le ReportPath de ton *.rdlc.
    le problème est que l'élément datasets n'existe pas dans l'ensemble des nouveaux éléments.
    De plus comment je peux alimenter mes datasets de mon report avec du code C++/CLI avec ce datsets.
    j'ai pas trouvé aucun document qui peut m'aider . vraiment je me suis bloqué.
    J'ai plus qu'une semaine que je chercherais mais en vain

  5. #5
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Bonjour,
    j'ai exactement le même problème mais avec les vc++ winforms, j'ai crée mon fichier rdlc et mon reportviewer mais lorsque j'ajoute mon .rdlc au reportviewer j'aurai comme erreur
    une erreur s'est produite lors du traitement du rapport local.
    La définition du rapport "report.rdlc" n'est pas spécifiée

    en plus que l'élément dataset n'existe pas
    une idée sur la solution?
    Merci d'avance

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    lorsque j'ai pas trouvé l'élément datasets, je me suis allé à Données->Ajouter une source des données->object et j'ai choisit l'une de mes classes mais j ai pas trouvé comment les lier à mon report.rdlc.

    Vraiment je me suis bloqué. Merci de m'aider

  7. #7
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Bon les plénicheurs.

    Si vous voulez intégrer un fichier *.rdlc dans votre application MFC.
    Voici les étapes

    1. Créer d'abord un projet CLR Windows Forms Controls Library

    2. Dans ce projet CLR, et dans ma solution explorer j'ajoute un nouvel item "Report" qui m'insère un fichier Report1.rdlc

    3. Dans ce projet CLR, j'ai mon user control MyReportDesignControl, je vais sur la toolbox sous la catégorie Reporting et je drague le ReportViewer

    4. J'encre le ReportViewer sur toute la surface du user Control.

    5. Toujours dans ce projet CLR, j'ajoute un petit fichier DataSources.h où je vais ranger toutes mes classes qui vont mapper vers les datasets de mon report.

    6. Pour avoir un dataset je crée une petite classe par exemple CClientDataSet qui contient les membres que je souhaite afficher dans le design de mon report. Cette classe je l'insère dans mon DataSources.h

    7. Insère mon fichier DataSources.h juste après le pragma once de mon user control MyReportDesignControl

    8. Ensuite puisque mon projet ne voit toujours pas mes datasets je fais une première compilation de mon projet CLR afin de forcer l'affiche des datasets.

    9. J'ouvre mon Report1.rdlc dans VS afin qu'il reste sélectionné et je vais dans le menu View > Report Data (chez moi VS 2010) ou bien Ctrl + Alt + D et j'affiche le panneaux Report Data

    10. Dans la toolbox de Report Data je fais New > DataSet
    et j'ai ma boite de Data Source Configuration Wizard qui apparait, je coche ma classe CClientDataSet qui va être mappé à mon dataset.

    11. Une fois que j'ai validé mes dataset apparaise dans le panneau de mon Report Data.

    12. Un peu de code pour notre projet CLR
    Le fichier DataSources.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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    #pragma once
     
    // Fichier DataSources.h
    // J'insère toutes mes classes <<DataSet>> ici
     
    using namespace System;
     
     
    namespace MyReportDesign 
    {
    	public ref class CClientDataSet
    	{
    	public:
    		property System::Guid ID;
    		property System::String^ ClientName;
    		property System::String^ Responsible;
    		property System::String^ Address;
    		property System::String^ Street;
    		property System::String^ StreetNumber;
    		property System::String^ Phone;
    		property System::String^ Email;
    		property System::String^ WebPage;
    		property System::String^ PostalBox;
    		property System::String^ PostalCode;
    		property System::String^ Town;
    		property System::String^ Country;
    		property System::String^ Description;
    	};
    }
    Le User Control qui embarque le ReportViewer
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
    #pragma once
     
    #include "DataSources.h"
     
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
     
     
    namespace MyReportDesign {
     
    	/// <summary>
    	/// Summary for MyReportDesignControl
    	/// </summary>
    	public ref class MyReportDesignControl : public System::Windows::Forms::UserControl
    	{
    	public:
    		MyReportDesignControl(void)
    		{
    			InitializeComponent();
    			//
    			//TODO: Add the constructor code here
    			//
    		}
     
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~MyReportDesignControl()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: Microsoft::Reporting::WinForms::ReportViewer^  reportViewer1;
    	protected: 
     
    	private:
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		System::ComponentModel::Container^ components;
     
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->reportViewer1 = (gcnew Microsoft::Reporting::WinForms::ReportViewer());
    			this->SuspendLayout();
    			// 
    			// reportViewer1
    			// 
    			this->reportViewer1->Dock = System::Windows::Forms::DockStyle::Fill;
    			this->reportViewer1->Location = System::Drawing::Point(0, 0);
    			this->reportViewer1->Name = L"reportViewer1";
    			this->reportViewer1->Size = System::Drawing::Size(150, 150);
    			this->reportViewer1->TabIndex = 0;
    			// 
    			// MyReportDesignControl
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->Controls->Add(this->reportViewer1);
    			this->Name = L"MyReportDesignControl";
    			this->ResumeLayout(false);
     
    		}
    #pragma endregion
    	};
    }
    13. Faîtes d'abord ce que je vous ai dit ensuite on verra comment référencer ce fichier avec le ReportViewer dans les MFC.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Bonjour,
    Ces étapes sont bien terminés.
    Je vous remercie beaucoup Gabrielly pour votre réponse.
    Vraiment, elle est bien détaillée.
    Je suis vraiment très reconnaissante pour vos aides.
    Comment maintenant je peux lier mes données.
    Bien Cordialement

  9. #9
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Bonjour,

    Si des datasets apparaissent maintenant dans la pane de ton Report Data alors tu peux designer ton report en glissant les éléments ( données membres)de ton datasets sur le report avec table, des text box, des diagrammes etc.

    Si tu ne sais pas designer ton report là c'est un autre problème!!!

    Comment maintenant je peux lier mes données.
    Pour lier les données exécutons d"abord les étapes suivantes.

    Il faut rendre ton user control opérationnel et connectable à l'architecture MFC.

    Modifie la classe de base de ton user control
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public ref class MyReportDesignControl : public System::Windows::Forms::UserControl,
    				public Microsoft::VisualC::MFC::ICommandTarget, 
    				public Microsoft::VisualC::MFC::IView
    Ajoute ses méthodes virtuelles dans ton user control
    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
     
     
     
    	public: 
    		virtual void Initialize(ICommandSource^ cmdSrc)
    		{
     
    		}
     
    		virtual void OnInitialUpdate()
    		{
     
    		}
     
    		virtual void OnUpdate()
    		{
     
    		}
     
    		virtual void OnActivateView(bool activate)
    		{
     
    		}
    J'ai quelques questions.
    1. Dis moi ton application MFC est-ce une Dialog based ou bien une application document vue SDI ou MDI ?

    2.Tes données viennent d'où, d'une base de données, d'un fichier, ou des variables de ton programmes?

    J'attend ta réaction

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Mon application MFC est une application MDI.
    Mes données se trouvent dans une boite de dialogue qui appartient à mon application.
    Cette boite de dialogue contient quatre champs texte et un tableau.
    A partir de ces champs textes j'ai besoin de remplir des labels dans le report.rdlc.
    De plus j ai besoin de dessiner un diagramme (chart) dans report1.rdlc à partir des informations existantes dans le tableau de la boite de dialogue.
    Merci beaucoup Gabrielly.Vous m'avez bien aidé.

  11. #11
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Bonjour,
    5. Toujours dans ce projet CLR, j'ajoute un petit fichier DataSources.h où je vais ranger toutes mes classes qui vont mapper vers les datasets de mon report.
    j'ai pas bien compris comment
    ranger toutes mes classes qui vont mapper vers les datasets
    il faut faire un include ou quoi?? C'est quoi le code qu'il faut mettre??

    6. Pour avoir un dataset je crée une petite classe par exemple CClientDataSet qui contient les membres que je souhaite afficher dans le design de mon report. Cette classe je l'insère dans mon DataSources.h
    c'est juste une déclaration des menmbres ou c'est quoi exactement??

    Est ce que la simple création DataSources.h et CClientDataSet, générera les Datasets???normalement elles doivent hériter d'une autre classe

    Sachant que mon projet est un vc++ windows Forms
    Merci pour votre aide

  12. #12
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Citation Envoyé par 3aychoucha
    Bonjour,

    5. Toujours dans ce projet CLR, j'ajoute un petit fichier DataSources.h où je vais ranger toutes mes classes qui vont mapper vers les datasets de mon report.
    j'ai pas bien compris comment
    Tu ajoutes un fichier *.h au projet soit DataSources.h ensuite tu inclus ce fichier dans le fichier *.h de ton user control j'ai donné un exemple de code au point 12.

    Citation Envoyé par 3aychoucha
    c'est juste une déclaration des menmbres ou c'est quoi exactement??

    Est ce que la simple création DataSources.h et CClientDataSet, générera les Datasets???normalement elles doivent hériter d'une autre classe
    Oui, exactement, ce sont des données membres, après que tu aies fais une première compilation de ton projet CLR tu ajoutes maintenant les datasets qui vont mapper vers tes classes.
    Ici les datasets sont générés à partir des classes. Les datasets peuvent être générés aussi à partir d'une autre source comme un objet de base de données.

  13. #13
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    3aychoucha,
    le concept de dataset dans les report *.rdlc est un peu différent de System.Data.DataSet de .NET
    Attention à la confusion!!!

    Citation Envoyé par moooona
    Mon application MFC est une application MDI.
    Ok, le ReportViewer sera hosté dans une CWinFormsView. Il suffira de changer la classe de base de la vue.

    Citation Envoyé par moooona
    Mes données se trouvent dans une boite de dialogue qui appartient à mon application.
    Cette boite de dialogue contient quatre champs texte et un tableau.
    A partir de ces champs textes j'ai besoin de remplir des labels dans le report.rdlc.
    Puisque ça ne vient pas d'une DB il faudra construit et alimenter manuellement le System.Data.DataSet et ensuite le fournir au ReportDataSource du report.rdlc

    Citation Envoyé par moooona
    De plus j ai besoin de dessiner un diagramme (chart) dans report1.rdlc à partir des informations existantes dans le tableau de la boite de dialogue.
    J'espère que tu sais comment créer un diagramme car là c'est un problème de design de ton report.

    Bon maintenant évolution.

  14. #14
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Enrichissons un peu notre user control
    voici le code
    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    #pragma once
    
    #include "DataSources.h"
    
    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace Microsoft::VisualC::MFC;
    using namespace Microsoft::Reporting::WinForms;
    
    
    namespace MyReportDesign {
    
    	/// <summary>
    	/// Summary for MyReportDesignControl
    	/// </summary>
    	public ref class MyReportDesignControl : public System::Windows::Forms::UserControl,
    				public Microsoft::VisualC::MFC::ICommandTarget, 
    				public Microsoft::VisualC::MFC::IView
    	{
    	public:
    		MyReportDesignControl(void)
    		{
    			InitializeComponent();
    			m_LocalReport = nullptr;
    		}
    
    	protected:
    		/// <summary>
    		/// Clean up any resources being used.
    		/// </summary>
    		~MyReportDesignControl()
    		{
    			if (components)
    			{
    				delete components;
    			}
    		}
    	private: Microsoft::Reporting::WinForms::ReportViewer^  reportViewer1;
    		Microsoft::Reporting::WinForms::LocalReport^ m_LocalReport;
    	protected: 
    
    	public: 
    		virtual void Initialize(ICommandSource^ cmdSrc)
    		{
    		}
    
    		virtual void OnInitialUpdate()
    		{
    			// on fait quelques petits réglages du control pour une meilleur présentation
    			reportViewer1->ProcessingMode = ProcessingMode::Local;
    			reportViewer1->SetDisplayMode(DisplayMode::PrintLayout);
    			reportViewer1->ZoomMode = ZoomMode::PageWidth;
    			reportViewer1->IsDocumentMapWidthFixed = false;
    		}
    
    		virtual void OnUpdate()
    		{
    			// lorsque la vue est mise à jour on raffraichit le report
    			if(m_LocalReport == nullptr)
    				return;
    
    			// on raffraichit le report
    			reportViewer1->RefreshReport();
    		}
    
    		virtual void OnActivateView(bool activate)
    		{
    
    		}
    
    		property String^ ReportPath
    		{
    			String^ get()  // Lire le report path
    			{
    				if(m_LocalReport == nullptr)
    					return nullptr;
    
    				return m_LocalReport->ReportPath;
    			}
    
    			void set(String^ value) // ecrire le report path
    			{
    				if(m_LocalReport == nullptr)
    					m_LocalReport = reportViewer1->LocalReport;
    
    				m_LocalReport->ReportPath = value;
    			}
    		}
    		
    
    		int AddReportDataSource(String^ strDataSourceName, DataSet^ dsReportData)
    		{
    			if(m_LocalReport == nullptr)
    				return -1;
    			
    			// J'ai retiré ici les détails relative à la connection à une BD
    			// car dsReportData est construit manuellement.
    
    			ReportDataSource^ rptDataSource = gcnew ReportDataSource();
    
    			rptDataSource->Name = strDataSourceName;  // le nom du dataset du report
    			rptDataSource->Value = dsReportData->Tables[0];   // les données pour le report
    
    			ReportDataSourceCollection^ rptDsColl = m_LocalReport->DataSources;
    			rptDsColl->Add(rptDataSource);  // on ajoute à la collection des DataSources du report
    
    			return rptDsColl->Count;
    		}
    		
    
    		int AddReportParameters(array<ReportParameter^>^ arrRptParameters)
    		{
    			if(m_LocalReport == nullptr || arrRptParameters == nullptr)
    				return -1;
    
    			m_LocalReport->SetParameters(arrRptParameters);  // définir éventuellement les paramètres du report
    			return arrRptParameters->Length;
    		}
    
    	private:
    		/// <summary>
    		/// Required designer variable.
    		/// </summary>
    		System::ComponentModel::Container^ components;
    
    #pragma region Windows Form Designer generated code
    		/// <summary>
    		/// Required method for Designer support - do not modify
    		/// the contents of this method with the code editor.
    		/// </summary>
    		void InitializeComponent(void)
    		{
    			this->reportViewer1 = (gcnew Microsoft::Reporting::WinForms::ReportViewer());
    			this->SuspendLayout();
    			// 
    			// reportViewer1
    			// 
    			this->reportViewer1->Dock = System::Windows::Forms::DockStyle::Fill;
    			this->reportViewer1->Location = System::Drawing::Point(0, 0);
    			this->reportViewer1->Name = L"reportViewer1";
    			this->reportViewer1->Size = System::Drawing::Size(150, 150);
    			this->reportViewer1->TabIndex = 0;
    			// 
    			// MyReportDesignControl
    			// 
    			this->AutoScaleDimensions = System::Drawing::SizeF(6, 13);
    			this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
    			this->Controls->Add(this->reportViewer1);
    			this->Name = L"MyReportDesignControl";
    			this->ResumeLayout(false);
    
    		}
    #pragma endregion
    	};
    }
    ensuite on va référencer les assemblies nécessaires...

  15. #15
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    C'est bientôt fini!
    On continue ou on laisse tomber.
    Je ne dépend que de vos réactions.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    oui gabrielly,
    J'attends la suite.
    J'ai essayé de terminer toute seule la suite pour ne pas vous géner et de mettre la réponse sur le forum mais il reste toujours un point qui cloche .
    En résumant voilà ce que j'ai fait:
    j'ai suit tous les étapes décrites dans la 7 éme discussion.
    Puis j'ai suit ce lien
    http://=http://www.developpez.net/fo...c/#post5581730 pour afficher le report viewer Bon jusqu'à maintenant c'est bon.
    lorsque j'ai ajouté la dernière étape qui se trouve dans la dernière discussion et il me reste encore quelques erreurs .
    Je suis vraiment très reconnaissante pour vos aide.
    J'attends la suite SVP .
    Bien Cordialement.

  17. #17
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Il faut ensuite référencer l'assemblie MFCMIFC80.dll dans le projet CLR qui se trouve typiquement dans le répertoire d''installation de votre Visual Studio (VS 2010 chez moi ) soit $(VsInstallDir)VC\atlmfc\lib\MFCMIFC80.dll

    Ensuite compile ton projet CLR pour t'assurer qu'il n'y a aucune erreur.

    Ensuite on revient à notre projet MFC et on remplace la classe de base de notre vue par CWinFormView
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    class CMfcReportView : public CWinFormsView
    et on référence dans notre projet MFC le projet CLR
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    #if defined(__cplusplus_cli)
     
    #include <vcclr.h>
    #include <afxwinforms.h>   // MFC Windows Forms support
     
    #using <MyReportDesign.dll>
    #endif
    Dans les propriétés du projet MFC on ajoute le support du runtime .NET
    Common Language Runtime Support (/clr)

    Puis Propriétés du projet MFC > Configuration Properties > C/C++ > General > Resolve #using References : $(SolutionDir)$(Configuration)\

    Est-ce que tu as un problème jusqu'à ce niveau?

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Février 2008
    Messages
    354
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Tunisie

    Informations forums :
    Inscription : Février 2008
    Messages : 354
    Points : 139
    Points
    139
    Par défaut
    Jusqu'à maintenant, j'ai aucun problème. Toutes les étapes décrites précédemment sont finis avec succés .
    Je suis bloquée maintenant dans cette phrase exactement
    Puisque ça ne vient pas d'une DB il faudra construit et alimenter manuellement le System.Data.DataSet et ensuite le fournir au ReportDataSource du report.rdlc
    J'ai essayé de construire une instance de la classe CClientDataSet mais ça n'a pas marché.
    Cette phrase n'est pas très claire.
    J'ai des données dans ma boite de dialogue qui se trouve dans le projet mfc puis j'ai fait une instance de CClientDataSet pour afficher les données mais ça n'a pas marché

  19. #19
    Membre éprouvé
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Points : 1 128
    Points
    1 128
    Par défaut
    Citation Envoyé par moooona
    J'ai essayé de construire une instance de la classe CClientDataSet mais ça n'a pas marché.
    Cette phrase n'est pas très claire.
    J'ai des données dans ma boite de dialogue qui se trouve dans le projet mfc puis j'ai fait une instance de CClientDataSet pour afficher les données mais ça n'a pas marché
    Patience on y arrive

    Dans ton projet MFC et dans la classe de ta vue ajoute ses membres virtuelles
    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
    29
    30
    31
    32
    CMfcReportView::CMfcReportView()
    	: CWinFormsView(MyReportDesign::MyReportDesignControl::typeid)
    {
    	// TODO: add construction code here
    
    }
    
    void CMfcReportView::OnInitialUpdate()
    {
    	CWaitCursor wait;
    	try
    	{
    		MyReportDesign::MyReportDesignControl^ pUserControl = safe_cast<MyReportDesign::MyReportDesignControl^>(this->GetControl());
    
    		// on fournit les données ici...
    
    		CWinFormsView::OnInitialUpdate();
    	}
    
    	catch(Microsoft::Reporting::WinForms::LocalProcessingException^ ex)
    	{
    		CString strMessage(ex->Message);
    		::AfxMessageBox(strMessage, MB_OK);
    	}
    }
    
    void CMfcReportView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
    {
    	CWaitCursor wait;
    	CWinFormsView::OnUpdate(pSender, lHint, pHint);
    }
    Dans le stdafx de ton projet MFC ajoute ces lignes en rouge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #if defined(__cplusplus_cli)
     
    struct _TREEITEM { };   // definition required while mapping to MSIL type
    struct _IMAGELIST { };  // definition required while mapping to MSIL type
    
    #include <vcclr.h>
    #include <afxwinforms.h>   // MFC Windows Forms support
     
    #using <MyReportDesign.dll>
    #endif

  20. #20
    Membre habitué
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2010
    Messages : 382
    Points : 174
    Points
    174
    Par défaut
    Bonjour,
    Concernant les winforms (en vc++) je crois que c'est beaucoup plus facile que les MFCs, Mais jusqu'à maintenant je ne trouve pas le bon chemin
    Si vous avez une idée, je serai très reconnaissante
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. Vérifier qu'un élément n'existe pas dans la BDD
    Par choumerv dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 14/03/2014, 14h04
  2. Réponses: 7
    Dernier message: 25/01/2012, 11h29
  3. [svg+xhtml+javascript+dom+php] L'élément dom créé n'existe pas
    Par Lcf.vs dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/01/2010, 15h08
  4. Réponses: 0
    Dernier message: 24/08/2009, 20h30
  5. [XSLT] test si un élément n'existe pas
    Par nadsky dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/06/2009, 13h10

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