PDA

View Full Version : انخاب چند فیلد خاص و چاپ آن در کریستال



saeedvbm
پنج شنبه 30 مرداد 1393, 17:17 عصر
با سلام
میخوام که تو فرم دوتاtextbox داشته باشم و کاربر رکوردهایی رو که می خواد انخاب کنه بره برا چاپ ، مثلاً از تاریخ 1393/1/1 تا تاریخ 1393/5/30 هر جندتا رکورد بود چاپ بشه ، ممنون میشم کمکم کنید .

اسماعیل ابراهیمی
پنج شنبه 30 مرداد 1393, 18:22 عصر
با فرض اینکه رکوردهای شما دارای 3 فیلد باشن باید اول گزارش رو توی کریستال طراحی کنید ، که اگه از قسمت ویزارد کریستال استفاده می کنید باید یک دیتاتیبل به ریپورت معرفی کنید تا ستون هاش رو بیاره و شما اونها رو بچینید
بعد از اینکه طراحی تموم شد باید نتایج جستجوی بین 2 تاریخ رو به صورت یک دیتا تیبل در بیارید و به عنوان منبع داده یا DataSource برای فایل ریپورت تنظیمش کنید

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

این کلیت کار بود تو هر قسمتیش مشکل داشتی بگو تا بیشتر توضیح بدم

Good Luck

saeedvbm
شنبه 01 شهریور 1393, 16:06 عصر
داداش دمت گرم بقیه رو میدونم فقط اگه درباره دیتاتیبل توضیح بدی ممنون میشم ، اگه با مثال باشه که خیلی عالی میشه !!

اسماعیل ابراهیمی
یک شنبه 02 شهریور 1393, 21:07 عصر
من می خوام 2 فرم مرتبط به کار رو توضیح بدم
1- فرم درخواست کننده گزارش که اطلاعات گزارش رو آماده کرده و میفرسته به فرم نمایش گزارش
2- فرم نمایش گزارش که یک شی Crystal report viewer روی اون قرار داره

در فرم 1 کدهای زیر رو داریم :



private DataTable CreateSortedDatatable()
{
DataTable dt = new DataTable();
dt.Columns.Add("transport_id");
dt.Columns.Add("transport_type");
dt.Columns.Add("peyment_type");
dt.Columns.Add("company_id");
dt.Columns.Add("company_name");
dt.Columns.Add("city_id");
dt.Columns.Add("city_name");
dt.Columns.Add("transport_number");
dt.Columns.Add("transport_date");
dt.Columns.Add("transport_weight");
dt.Columns.Add("transport_total_price");
dt.Columns.Add("transport_price");
dt.Columns.Add("agency_portion");
dt.Columns.Add("transport_description");
dt.Columns.Add("is_city_agency");
dt.Columns.Add("current_agency_portion_price");



foreach (DataGridViewRow row in dgv_transport.Rows)
{
DataRow dRow = dt.NewRow();
foreach (DataGridViewCell cell in row.Cells)
{


if (cell.ColumnIndex == 10 || cell.ColumnIndex == 11 || cell.ColumnIndex == 12)
{
dRow[cell.ColumnIndex] =special_class.ToFormattedThousands(cell.Value.ToS tring());
}
else
{
dRow[cell.ColumnIndex] = cell.Value;
}
}
dt.Rows.Add(dRow);
}
return dt;
}


private void btn_showreport_Click(object sender, EventArgs e)
{
report.all_trasport = lbl_transport_all.Text;
report.in_trasport = lbl_transport_in_count.Text;
report.out_trasport = lbl_transport_out_count.Text;
report.transport_date = lbl_date.Text;
report.transport_company = lbl_company.Text;
report.transport_city = lbl_city.Text;
report.peyment_pre_count = lbl_peyment_pre_count.Text;
report.peyment_next_count = lbl_peyment_next_count.Text;
report.transport_weight = lbl_weight.Text;
report.transport_total_price = lbl_total_price.Text;
report.transport_price = lbl_price.Text;
report.transport_debt =lbl_debt.Text;
report.transport_credit = lbl_credit.Text;
report.transport_remain = lbl_remain.Text;


report.ReportDataTable = CreateSortedDatatable();
report frm_report = new report();
frm_report.ShowDialog();
}


و کدهای فرم 2 به صورت زیر هستن :



using System;
using System.Data;
using DevComponents.DotNetBar;
using CrystalDecisions.CrystalReports.Engine;


namespace Transport
{
public partial class report : Office2007Form
{
public report()
{
InitializeComponent();
}


public static DataTable ReportDataTable;


public static string all_trasport = "";
public static string in_trasport = "";
public static string out_trasport = "";
public static string transport_date= "";
public static string transport_company= "";
public static string transport_city= "";
public static string peyment_pre_count = "";
public static string peyment_next_count= "";
public static string transport_weight = "";
public static string transport_total_price= "";
public static string transport_price= "";
public static string transport_debt= "";
public static string transport_credit = "";
public static string transport_remain = "";




private void report_Load(object sender, EventArgs e)
{
DataSet1 ds = new DataSet1();
CR mycr = new CR();
TextObject all_transport2 = (TextObject)mycr.ReportDefinition.ReportObjects["all_transport"];
TextObject in_transport2 = (TextObject)mycr.ReportDefinition.ReportObjects["in_transport"];
TextObject out_transport2 = (TextObject)mycr.ReportDefinition.ReportObjects["out_transport"];
TextObject transport_date2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_date"];
TextObject transport_company2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_company"];
TextObject transport_city2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_city"];
TextObject peyment_pre2 = (TextObject)mycr.ReportDefinition.ReportObjects["peyment_pre"];
TextObject peyment_next2 = (TextObject)mycr.ReportDefinition.ReportObjects["peyment_next"];
TextObject transport_weight2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_weight"];
TextObject transport_total_price2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_total_price"];
TextObject transport_price2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_price"];
TextObject transport_debt2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_debt"];
TextObject transport_credit2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_credit"];
TextObject transport_remain2 = (TextObject)mycr.ReportDefinition.ReportObjects["transport_remain"];


all_transport2.Text = all_trasport;
in_transport2.Text = in_trasport;
out_transport2.Text = out_trasport;
transport_date2.Text = transport_date;
transport_company2.Text = transport_company;
transport_city2.Text = transport_city;
peyment_pre2.Text=peyment_pre_count;
peyment_next2.Text=peyment_next_count;
transport_weight2.Text=transport_weight;
transport_total_price2.Text=transport_total_price;
transport_price2.Text=transport_price;
transport_debt2.Text = transport_debt;
transport_credit2.Text = transport_credit;
transport_remain2.Text = transport_remain;












mycr.SetDataSource(ReportDataTable);
crystalReportViewer1.ReportSource = mycr;
}


private void btn_back_Click(object sender, EventArgs e)
{
this.Close();
}
}
}




یک فایل کریستا ل ریپورت هم به اسم CR دارم که گزارش رو توش طراحی کردم

Good Luck