PDA

View Full Version : آموزش: linq to sql , وگزارش ساز rdlc



khokhan
پنج شنبه 20 تیر 1392, 22:00 عصر
تهیه گزارش با استفاده از معماری linq to sql
فراخوانی اطلاعات با linq :


void load()
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var q =
from a in dc.GetTable<k_info>()
select a;
dataGridView1.DataSource = q;
this.dataGridView1.Columns[0].Visible = false;
this.dataGridView1.Columns[1].HeaderText = "نام کالا";
this.dataGridView1.Columns[2].HeaderText = "تعداد کالا";
this.dataGridView1.Columns[3].HeaderText = "قیمت کالا";

}
فراخوانی متد در رویداد لود فرم:

private void Form1_Load(object sender, EventArgs e)
{
load();
}

فیلتر نمودن اطلاعات در رویداد TextChanged یه دونه textbox :


private void textBox1_TextChanged(object sender, EventArgs e)
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var q =
(from a in dc.GetTable<k_info>()
where a.k_name.Contains(textBox1.Text)
select a).ToList();
dataGridView1.DataSource = q;
this.dataGridView1.Columns[0].Visible = false;
this.dataGridView1.Columns[1].HeaderText = "نام کالا";
this.dataGridView1.Columns[2].HeaderText = "تعداد کالا";
this.dataGridView1.Columns[3].HeaderText = "قیمت کالا";

}


خوب تا این قسمت ما اطلاعات رو در گرید قرار دادیم و فیلترش کردیم مرحله بعد طراحی گزارش :

یه دیتاست در پرو ژه قرار می دیم و یه فایل گزارش و در داخل گزارش یه تیبل گذاشته و دیتاست رو بهش وصل می کنیم

بعد یه فرم جدید ایجاد کرده و یه reportViewer درش قرار می دیم و از" آرو " گوشه سمت راستreportViewer
گزارش پروژه رو بهش وصل م کنیم
و در رویداد باتن مربوط به گزارش اینطور کد نویسی می کنیم :


Form3 f = new Form3();
DataSet ds = new DataSet();
DataSet1.k_infoDataTable tb = new DataSet1.k_infoDataTable();
DataClasses1DataContext dc = new DataClasses1DataContext();
var result = (from n in dc.GetTable<k_info>()
where n.k_name.Contains(textBox1.Text)
select n).ToList();
foreach (k_info item in result)
{
tb.Rows.Add(item.k_id, item.k_name, item.k_Count, item.k_price);
}
if (result == null)
{
MessageBox.Show("null");
}
else
{
ds.Tables.Add(tb);
f.k_infoBindingSource.DataSource = ds;
f.reportViewer1.RefreshReport();
f.ShowDialog();

}


البته یادتون باشه در قسمت designer فرمی که reportViewer درش قرار گرفته در انتهای کدها چهار خط کد با نوع private هست که بایستی به public تبدیل کنین تاreportViewer این فرم در سایر فرمها قابل دسترسی باشه


public Microsoft.Reporting.WinForms.ReportViewer reportViewer1;
public System.Windows.Forms.BindingSource k_infoBindingSource;
public DataSet1 DataSet1;
public DataSet1TableAdapters.k_infoTableAdapter k_infoTableAdapter;

bitcob589
جمعه 21 تیر 1392, 17:26 عصر
اگر امکان دارد سمپل بگذارید

khokhan
جمعه 21 تیر 1392, 18:15 عصر
اگر امکان دارد سمپل بگذارید
دوست عزیز اتفاقا سمپل گذاشته بودم :ناراحت:

..........................:لبخند: