PDA

View Full Version : تشریح یک متد برای گزارش گیری



ebtekar
چهارشنبه 01 خرداد 1387, 11:01 صبح
من برای یه گزارش گیری که با چندیدن بار سوال کردن از دوستان می خواستم انجام بدم و در آخر هم به نتیجه نرسیدم تو سایت های زبان اصلی اون کد مورد نظر رو پیدا کردم ولی الان موقع گزارش صفحه ای میاد که به من میگه نام هر ستون رو وارد کن



using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.ReportSource;
using CrystalDecisions.Shared;
using CrystalDecisions.Windows.Forms;
namespace app5
{
publicpartialclassForm1 : Form
{
CrystalReport1 objRpt;
public Form1()
{
InitializeComponent();
}
privatevoid button1_Click(object sender, EventArgs e)
{
objRpt = newCrystalReport1();
string connString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\\db1.mdb";

//Get Select query Strring and add parameters to the
//Crystal report.
string query = CreateSelectQueryAndParameters();
//if there is no item select,then exit from the method.
if (!query.Contains("Column"))
{
MessageBox.Show("No selection to display!");
return;
}
try
{
OleDbConnection Conn = newOleDbConnection(connString);
OleDbDataAdapter adepter = newOleDbDataAdapter(query, connString);
DataSet1 Ds = newDataSet1();
adepter.Fill(Ds, "Customer");

objRpt.SetDataSource(Ds);
crystalReportViewer1.ReportSource = objRpt;
}
catch (OleDbException oleEx)
{
MessageBox.Show(oleEx.Message);
}
catch (Exception Ex)
{
MessageBox.Show(Ex.Message);
}
}
///<summary>
/// This method is used to
/// 1. creat SELECT query according to the selcted column names and
/// 2. create parameters and assign values for that parameter that correspond to
/// the crystal report.
/// NOTE: This parameter is used to display Coulumn names of the Crystal Report
/// according to the user selecteion.
///</summary>
///<returns></returns>
privatestring CreateSelectQueryAndParameters()
{
ReportDocument reportDocument;
ParameterFields paramFields;
ParameterField paramField;
ParameterDiscreteValue paramDiscreteValue;
reportDocument = newReportDocument();
paramFields = newParameterFields();


string query = "SELECT ";
int columnNo = 0;
if (chbCode.Checked)
{
columnNo++;
query = query.Insert(query.Length, "Code as Column" + columnNo.ToString());

paramField = newParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = newParameterDiscreteValue();
paramDiscreteValue.Value = "Customer Code";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
if (chbFirstName.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "FirstName as Column" + columnNo.ToString());

paramField = newParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = newParameterDiscreteValue();
paramDiscreteValue.Value = "First Name";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
if (chbLastName.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "LastName as Column" + columnNo.ToString());

paramField = newParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = newParameterDiscreteValue();
paramDiscreteValue.Value = "Last Name";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
if (chbAddress.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "Address as Column" + columnNo.ToString());

paramField = newParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = newParameterDiscreteValue();
paramDiscreteValue.Value = "Address";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
if (chbPhone.Checked)
{
columnNo++;
if (query.Contains("Column"))
{
query = query.Insert(query.Length, ", ");
}
query = query.Insert(query.Length, "Phone as Column" + columnNo.ToString());

paramField = newParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = newParameterDiscreteValue();
paramDiscreteValue.Value = "Phone";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}
//if there is any remaining parameter, assign empty value for that
//parameter.
for (int i = columnNo; i < 5; i++)
{
columnNo++;
paramField = newParameterField();
paramField.Name = "col" + columnNo.ToString();
paramDiscreteValue = newParameterDiscreteValue();
paramDiscreteValue.Value = "";
paramField.CurrentValues.Add(paramDiscreteValue);
//Add the paramField to paramFields
paramFields.Add(paramField);
}

crystalReportViewer1.ParameterFieldInfo = paramFields;
query += " FROM Customer" ;
return query;
}
privatevoid Form1_Load(object sender, EventArgs e)
{
}
}
}


این کد باعث میشه که کار بر هر فیلد دلخواهش رو از جدول با انتخاب چکباکس های مورد نظر به چاپ برسونه

ebtekar
جمعه 03 خرداد 1387, 11:29 صبح
خود برنامه رو براتون گزاشتم تا پیغام رو ببینید