با سلام
میخوام که تو فرم دوتاtextbox داشته باشم و کاربر رکوردهایی رو که می خواد انخاب کنه بره برا چاپ ، مثلاً از تاریخ 1393/1/1 تا تاریخ 1393/5/30 هر جندتا رکورد بود چاپ بشه ، ممنون میشم کمکم کنید .
Printable View
با سلام
میخوام که تو فرم دوتاtextbox داشته باشم و کاربر رکوردهایی رو که می خواد انخاب کنه بره برا چاپ ، مثلاً از تاریخ 1393/1/1 تا تاریخ 1393/5/30 هر جندتا رکورد بود چاپ بشه ، ممنون میشم کمکم کنید .
با فرض اینکه رکوردهای شما دارای 3 فیلد باشن باید اول گزارش رو توی کریستال طراحی کنید ، که اگه از قسمت ویزارد کریستال استفاده می کنید باید یک دیتاتیبل به ریپورت معرفی کنید تا ستون هاش رو بیاره و شما اونها رو بچینید
بعد از اینکه طراحی تموم شد باید نتایج جستجوی بین 2 تاریخ رو به صورت یک دیتا تیبل در بیارید و به عنوان منبع داده یا DataSource برای فایل ریپورت تنظیمش کنید
البته دیتاتیبل حاصل از جستجو باید با دیتاتیبلی که می خوایین با فایل ریپورت تنظیم بشه هماهنگی تعداد فیلد و نوع فیلد رو داشته باشه
این کلیت کار بود تو هر قسمتیش مشکل داشتی بگو تا بیشتر توضیح بدم
Good Luck
داداش دمت گرم بقیه رو میدونم فقط اگه درباره دیتاتیبل توضیح بدی ممنون میشم ، اگه با مثال باشه که خیلی عالی میشه !!
من می خوام 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