گزارش گیری توسط StimulSoft که داده ها از join در LINQ بدست می آید
با سلام
دوستان من کد زیر را دارم
var query = from r in mydb.tblInvoices
join a in mydb.tblAddInvoices on r.invoice_ID equals a.invadd_invoiceID
join s in mydb.tblStores on a.invadd_storeID equals s.store_ID
join u in mydb.tblUsers on r.invoice_userID equals u.user_ID
where r.invoice_ID == Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value)
orderby r.invoice_ID descending
select new { r.invoice_ID, r.invoice_date, r.invoice_desc, r.invoice_off, r.invoice_tax, u.user_fullname, u.user_address, u.user_tell, s.store_name, a.invadd_price, a.invadd_qulity, a.invadd_stock, a.invadd_sumprice };
می خوام این چند جدول را به stimul برای چاپ منتقل کنم ولی چطور می تونم اینکار انجام بدم چون stimul با هر بار regData فقط نام یک جدول را دریافت می کنه ومن چند جدول را جوین کردم
StiReport rep = new StiReport();
rep.Load(Application.StartupPath + "\\fatcktorprint2.mrt");
rep.Dictionary.Clear();
rep.RegData("tblInvoice", query);
rep.Dictionary.Synchronize();
//rep.Compile();
rep.Show();
نقل قول: گزارش گیری با stimul و linq,join
دوست عزیز اگه شما بخواهید چندین جدوال جون شدن در استیمول نشان بدید مشکلی نیست وقتی شما دارید اطلاعات رو نمایش میدید در دیتگرید ویو تنها کافی است همون مقادیر که در دیتاگرید ویو نشان میدید رو پاس بدید به سمت استیمول چون شما حتما دارید اطلاعات جون رو در یک دیتاگرید ویو نمایش میدید به همین دلیل در یک جدوال استیمول ریپورت میتونید بیارید و نمایش بدید برای گزارش.
این دستور من هستش 2 تا جدوال جون کردم ولی در یک ریپورت که در استیمول هستش درست نشان میدم.
void Prn()
{
try
{
if (dgv1.CurrentRow == null)
{
return;
}
DataTable table = new DataTable("DB_Table");
foreach (DataGridViewColumn column in dgv1.Columns)
{
table.Columns.Add(column.Name, typeof(string));
}
for (int j = 0; j < dgv1.Rows.Count; j++)
{
table.Rows.Add();
for (int k = 0; k < dgv1.Columns.Count; k++)
{
table.Rows[j][k] = dgv1[k, j].Value;
}
}
DataSet ds = new DataSet();
ds.Tables.Add(table);
//StiReport stiReport = StiReport.GetReportFromAssembly(@"Rpt\RptFoctorFor oshKala.dll", true);
StiReport stiReport = new StiReport();
stiReport.Load(Application.StartupPath + @"..\Report.mrt");
stiReport.RegData(table);
StiOptions.Viewer.Windows.ShowPageDesignButton = false;
StiOptions.Viewer.Windows.ShowOpenButton = false;
(stiReport.GetComponentByName("TxtDateAndTime") as StiText).Text = "تاريخ و زمان صدور فاکتور : " +
needCode.TimeFull(DateTime.Now) +
" - " +
needCode.dateshort(DateTime.Now);
(stiReport.GetComponentByName("DetialsFull") as StiText).Text = "نام مشتری : " + TxtNameAndLast.Text +
" \n" + LblSum.Text + "\n" + "جمع کل بدهی به حروف : " +
LblSumHorof.Text + " تومان";
stiReport.Design();
stiReport.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
نقل قول: گزارش گیری با stimul و linq,join
سلام
ولی من اطلاعات را از دیتاگرید چاپ نمی کنم مثلا کاربر شماره فاکتور وارد می کنه و می خواد چاپش کنه اونوقت چطور؟
نکته : من از linq استفاده می کنم
نقل قول: گزارش گیری با stimul و linq , join
سلام
دوست عزیز - شما میتوانید با هر روشی و از هر منبع داده ای و .... ( که میتواند شامل چندین جدول و .... باشد ) اطلاعات مورد نیازگزارشتون را جمع آوری ( مثلا واکشی اطلاعات از دیتابیس ) و بوسیله یک یا چند دیتاتیبل / دیتاست به استیمول ارسال کنید و ...................
پست شماره 2 نمونه کار خوبی میتونه براتون باشه ( مهم نیست که از دیتاگرید ویو و .... استفاده شده - مهم اینه که اطلاعات مورد نیاز توسط داخل دیتاست ذخیره و به گزارش ارسال شده است )
نقل قول: گزارش گیری با stimul و linq , join
خب الان من چطور میتونم query که با linq نوشتم را داخل دیتاست بیارم؟
چون با دیتاست مشکلم حل میشه
نقل قول: گزارش گیری با stimul و linq , join
اصلا نیازی به استفاده از دیتاتیبل و دیتاست نیست. تقریبا همه گزارش سازها از دیتاسورس از نوع Object میتوانند استفاده کنند.
مراحل زیر را دنبال کنید:
1- در برنامه خود، یک کلاس با پراپرتی هایی برای ذخیره مقادیری که جلوی select new نام بردید ایجاد کنید(مثلا نام این کلاس را MyClass میگذاریم)
2- در گزارش خود،(در هنگام طراحی گزارش) یک دیکشنری از نوع BusinessObject ایجاد کنید و ستونهایی را هم نام و هم نوع پراپرتی های کلاسی که در مرحله قبل ایجاد کرده اید(MyClass) به آن اضافه کنید.
3- از روی BusinessObject یک جدول(یا هر چیز دیگری) به گزارش اضافه کنید. دقت کنید خاصیت Business Object جدول از بخش Data (در Properties) به آبجکتی که ایجاد کرده اید متصل باشد
گزارش را ذخیره کنید.
4- در برنامه در جایی که گزارش را ایجاد میکنید، دیتای آماده شده را با متد RegBusinessObject به گزارش ارسال کرده و گزارش را نمایش دهید.
https://www.stimulsoft.com/en/docume...ilverlight.htm
http://www.dotnettips.info/post/1803...%B7-stimulsoft
نقل قول: گزارش گیری با stimul و linq , join
نقل قول:
نوشته شده توسط
Mahmoud.Afrad
اصلا نیازی به استفاده از دیتاتیبل و دیتاست نیست. تقریبا همه گزارش سازها از دیتاسورس از نوع Object میتوانند استفاده کنند.
مراحل زیر را دنبال کنید:
1- در برنامه خود، یک کلاس با پراپرتی هایی برای ذخیره مقادیری که جلوی select new نام بردید ایجاد کنید(مثلا نام این کلاس را MyClass میگذاریم)
2- در گزارش خود،(در هنگام طراحی گزارش) یک دیکشنری از نوع BusinessObject ایجاد کنید و ستونهایی را هم نام و هم نوع پراپرتی های کلاسی که در مرحله قبل ایجاد کرده اید(MyClass) به آن اضافه کنید.
3- از روی BusinessObject یک جدول(یا هر چیز دیگری) به گزارش اضافه کنید. دقت کنید خاصیت Business Object جدول از بخش Data (در Properties) به آبجکتی که ایجاد کرده اید متصل باشد
گزارش را ذخیره کنید.
4- در برنامه در جایی که گزارش را ایجاد میکنید، دیتای آماده شده را با متد RegBusinessObject به گزارش ارسال کرده و گزارش را نمایش دهید.
https://www.stimulsoft.com/en/docume...ilverlight.htm
http://www.dotnettips.info/post/1803...%B7-stimulsoft
با تشکر
مشکلم حل شد،
دقیقا روش شما رو استفاده کردم بدون استفاده از کلاس فقط نتیجه query را درون regbusinessobject ریختم
var query = (from r in mydb.tblInvoices
join a in mydb.tblAddInvoices on r.invoice_ID equals a.invadd_invoiceID
join s in mydb.tblStores on a.invadd_storeID equals s.store_ID
join u in mydb.tblUsers on r.invoice_userID equals u.user_ID
where r.invoice_ID == Convert.ToInt32(dataGridView1.CurrentRow.Cells[0].Value)
orderby r.invoice_ID descending
select new { r.invoice_ID, r.invoice_date, r.invoice_desc, r.invoice_off, r.invoice_tax, u.user_fullname, u.user_address, u.user_tell, s.store_name, a.invadd_price, a.invadd_qulity, a.invadd_stock, a.invadd_sumprice }).ToList();
// show report
StiReport rep = new StiReport();
reportfactorClass.factor repfact = new reportfactorClass.factor();
rep.RegBusinessObject("reportfactorClass",query);
rep.Load(Application.StartupPath + "\\fatcktorprint.mrt");
rep.Dictionary.Clear();
rep.Show();
نقل قول: گزارش گیری با stimul و linq , join
خب الان
جمع را تو stimul می دونم چطوری فقط ضرب، تفریق ، تقسیم چطوری انجام میشن؟