Reportviewer and subreport

waydevandyk Messages postés 2 Date d'inscription lundi 19 mars 2012 Statut Membre Dernière intervention 7 mai 2012 - 7 mai 2012 à 22:48
salut a tous,
je developpe une application winform en c# et j'ai un probleme avec le reportviewer, je veux savoir comment lier un sous-rapport a un rapport maitre.
en fait , j'utilise deux BDD differentes dont:

- les information de l'entité enseignants( id,nom,prenom ...) de la base access
- les heure d'enseignement de l'entité HeureSupp(id, heure cr, heure TD ,...) de la base sql server

je veut afficher les données des deux entités dans un meme table du rapport, j'ai deja fait une solution mais mon code n'est pas bien organisé, quelqu'un peut m'aider s'il vous plait ??

, voila mon code :


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.OleDb;
using Microsoft.Reporting.WinForms;

namespace reportSubreport
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private DataTable infoenseignant = null;

private DataTable LoadHS()
{

DataSet dataSet = new DataSet();

string strconnSql = @"Data Source=WAYDE-PC\SQLEXPRESS; Initial Catalog=HeureSuppl; Integrated Security=SSPI;";


SqlDataAdapter ensAdapter = new SqlDataAdapter("select * FROM HeureSupplementaire", strconnSql);

ensAdapter.Fill(dataSet, "heuresupp4");

return dataSet.Tables[0];
}

private DataTable Loadensinf()
{

DataSet dataSet = new DataSet();

string strconnAccess = @"Provider=Microsoft.Jet.OLEDB.4.0;" + @"Data source= C:\Users\wayde\Desktop\Developpemnt de l'application\Base de donnée\base vide.mdb";

OleDbDataAdapter HSAdapter = new OleDbDataAdapter("SELECT * FROM enseignant", strconnAccess);

HSAdapter.Fill(dataSet, "enseignant");

return dataSet.Tables[0];
}

void SubreportProcessingEventHandler(object sender, SubreportProcessingEventArgs e)
{
if (infoenseignant == null)
infoenseignant = Loadensinf();
e.DataSources.Add(new ReportDataSource("enseignant", infoenseignant));
}

private void Form1_Load(object sender, EventArgs e)
{
ReportViewer reportViewer = new ReportViewer();



reportViewer.ProcessingMode = ProcessingMode.Local;



reportViewer.LocalReport.ReportPath = @"C:\Users\wayde\Desktop\appl exemple\testcodevb\reportSubreport\reportSubreport\Report1.rdlc";



reportViewer.LocalReport.SubreportProcessing +=
new SubreportProcessingEventHandler(SubreportProcessingEventHandler);



reportViewer.LocalReport.DataSources.Add(
new ReportDataSource("heuresupp4", LoadHS()));



reportViewer.Dock = DockStyle.Fill;
this.Controls.Add(reportViewer);

this.reportViewer1.RefreshReport();
}
}
}