Marwa_ Ответов: 1

Как создать отчет в форме windows с помощью средства просмотра отчетов с объектными источниками данных


I'm using visual studio 2013 and widows Form and i want to generate reports with report viewer but i'm new on this topic. This is my class wich must be used as object Datasource

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApplication3
{
public class Result
{
    public String epc
    {
        get;
        set;
    }
    public int nombreEsseyage
    {
        get;
        set;
    }
    public double dureeEssay
    {
        get;
        set;
    }
    public String marque
    {
        get;
        set;
    }
    public String nom
    {
        get;
        set;
    }
    public String couleur
    {
        get;
        set;
    }
    String taille
    {
        get;
        set;
    }
     public    Result(String epc1, int nombreEsseyage1, double dureeEssay1,       String marque1, String nom1, String couleur1, String taille1)
{
    epc = epc1;
    nombreEsseyage = nombreEsseyage1;
    dureeEssay = dureeEssay1;
    marque = marque1;
    nom = nom1;
    couleur = couleur1;
    taille = taille1;
}
}
}

Then I get Data from my DataBase and i added code to calculate 2 fields of the classe result which are nombreessayage et dureeessay. the code is below:

namespace WindowsFormsApplication3
<pre lang="c#"><pre>{
public partial class Form5 : Form
{
    public Form5()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection Cn;
SqlCommand Cmd;
Cn = new SqlConnection(@"Data Source=DESKTOP-ODCFVR1\SQLEXPRESS;Initial Catalog=RFID;Integrated Security=True");
Cn.Open();
Cmd = new SqlCommand("SELECT  Hab_essaye_EPC, hab_essaye_time, article_marque, article_nom, article_couleur,article_taille  FROM Habits_essayes, Habits where Hab_essaye_EPC = article_epc and article_nom LIKE '%'+ @Nom + '%'  and Hab_essaye_EPC NOT IN (Select Hab_vendu_Epc From habits_vendus)", Cn);
Cmd.Parameters.Add("@Nom", SqlDbType.VarChar, 30).Value = textBox1.Text;
SqlDataAdapter da = new SqlDataAdapter(Cmd);
DataTable dataTable = new DataTable();
// this will query your database and return the result to your datatable
da.Fill(dataTable);
String epcmoinun = "";
\\Initialization of variables
List<Result> resultats = new List<Result>();
DateTime timemoinun = new DateTime();
double dureeEssayage = 0;
int nombreEssay = 0;
String marqueM = "";
String couleurM = "";
String nomM = "";
String tailleM = "";
foreach (DataRow row in dataTable.Rows)
{
    String epcLocal = row["Hab_essaye_EPC"].ToString();
    DateTime timeLocal = (DateTime)row["hab_essaye_time"];
    String marqueL = row["article_marque"].ToString();
    String couleurL = row["article_couleur"].ToString();
    String nomL = row["article_nom"].ToString();
    String tailleL = row["article_taille"].ToString();
    if (timemoinun == null)
    {
        epcmoinun = epcLocal;
        nombreEssay++;
        timemoinun = timeLocal;
        marqueM = marqueL;
        nomM = nomL;
        couleurM = couleurL;
        tailleM = tailleL;
    }
    else
    {
        if (epcmoinun.Equals(epcLocal))
        {
            marqueM = marqueL;
            nomM = nomL;
            couleurM = couleurL;
            tailleM = tailleL;
            var diff = (timeLocal - timemoinun).TotalMinutes;
            if (diff <= 2)
            {
                dureeEssayage = dureeEssayage + diff;
            }
            else
            {
                nombreEssay++;
            }

            timemoinun = timeLocal;
        }
        else
        {
            Result rr = new Result(epcmoinun, nombreEssay, dureeEssayage, marqueM, nomM, couleurM, tailleM);
            resultats.Add(rr);
            epcmoinun = epcLocal;
            timemoinun = timeLocal;
            dureeEssayage = 0;
            nombreEssay = 1;
            marqueM = marqueL;
            nomM = nomL;
            couleurM = couleurL;
            tailleM = tailleL;
        }
    }    
}
Result rr2 = new Result(epcmoinun, nombreEssay, dureeEssayage, marqueM, nomM, couleurM, tailleM);
resultats.Add(rr2);
chart1.DataSource = resultats;
chart2.DataSource = resultats;
chart1.Series[0].IsValueShownAsLabel = true;
chart2.Series[0].IsValueShownAsLabel = true;
chart1.ChartAreas[0].AxisX.MajorGrid.LineWidth = 0;
chart1.ChartAreas[0].AxisY.MajorGrid.LineWidth = 0;

chart2.ChartAreas[0].AxisX.MajorGrid.LineWidth = 0;
chart2.ChartAreas[0].AxisY.MajorGrid.LineWidth = 0;
    foreach (Result tt in resultats)
    {
        chart1.Series[0].XValueMember = "epc";
        chart1.Series[0].YValueMembers = "nombreEsseyage";
        chart1.DataBind();
        chart2.Series[0].XValueMember = "epc";
        chart2.Series[0].YValueMembers = "dureeEssay";
        chart2.DataBind();
        Cn.Close();
        da.Dispose();  
    }
    }
    }
    }


Что я уже пробовал:

I Added then a reportViwer to my project and i selected Result as a dataSource. I inserted then a Chart. Now i want to set the datasource "binding" and i don't know how to do it.

Can someone help me? :)

1 Ответов

Рейтинг:
2

S.Javaid

Вы можете записать набор данных в XML, а затем предоставить вам представление отчета xml в качестве источника данных . Это динамический способ создания отчета из xml.