PDA

View Full Version : بهترین و کوتاه ترین راه چاپ دیتاگرید با استیمول



vapa_71
جمعه 31 خرداد 1392, 20:01 عصر
سلام
دوستان یک راه ساده و کوتاه برای چاپ محتویات دیتاگرید توسط استیمول میخوام. دیتا گرید به بانک متصل نیست و توسط کاربر وارد میشه.
مثال هایی رو دیدم اما تقریبا هیچکدوم کارم رو راه ننداخت.

khokhan
جمعه 31 خرداد 1392, 21:16 عصر
سلام
دوستان یک راه ساده و کوتاه برای چاپ محتویات دیتاگرید توسط استیمول میخوام. دیتا گرید به بانک متصل نیست و توسط کاربر وارد میشه.
مثال هایی رو دیدم اما تقریبا هیچکدوم کارم رو راه ننداخت.
سلام
عزیز جان فکر نکنم دیگه ساده تر و کوتاه تر و خوشگل تر :بامزه:از این نمونه که درست کردم بتونی پیدا کنی :لبخند:

http://uplod.ir/5jqlffru5nbk/dgv_to_stir.rar.htm

کوتاه ومفید تنها در 14 سطر کل گریدتون رو می ریزه تو استیمول

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

intel_amd
جمعه 31 خرداد 1392, 22:23 عصر
exe برنامتونو اجرا کردم موقع کلیک بر روی چاپ ارور میده

vapa_71
جمعه 31 خرداد 1392, 22:38 عصر
واسه منم مشکل داره !

khokhan
جمعه 31 خرداد 1392, 22:46 عصر
واسه منم مشکل داره !

با وجود dllهای مربوطه حجم پروژه بیشتر می شه
dll هارو خودتون به پوشه dibug اضافه کنین و ببینین کار می کنه

vapa_71
جمعه 31 خرداد 1392, 22:49 عصر
چیزی بدون dll سراغ نداری ؟ یه کد ساده تر

مرسی

khokhan
جمعه 31 خرداد 1392, 22:55 عصر
چیزی بدون dll سراغ نداری ؟ یه کد ساده تر

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

این دیگه از اون حرفهاست :قهقهه:

این dll ها مربوط به گزارش ساز استیمول می شه بدون اونها چطور می تونی گزارش بسازی

1 . Stimulsoft.Report.dll

2 . Stimulsoft.Base.dll

3 . Stimulsoft.Report.Design.dll

khokhan
جمعه 31 خرداد 1392, 22:58 عصر
آقا dll ها توی نمونه ای که توی پست 2 گذاشتم هستش بردارین و بذارین توی پوشه dibug نمونه ی پست 5

vapa_71
جمعه 31 خرداد 1392, 22:58 عصر
به حق حرفهای نشنیده و ندیده و بلکه هم ناگفته

این دیگه از اون حرفهاست :قهقهه:

این dll ها مربوط به گزارش ساز استیمول می شه بدون اونها چطور می تونی گزارش بسازی

1 . Stimulsoft.Report.dll

2 . Stimulsoft.Base.dll

3 . Stimulsoft.Report.Design.dll

من فکر کردم dll های دیگست خوب من استیمول رو نصب کردم دیگه dll لازم نداره که

khokhan
جمعه 31 خرداد 1392, 23:03 عصر
من فکر کردم dll های دیگست خوب من استیمول رو نصب کردم دیگه dll لازم نداره که
توی سیستم کاربر چی اونجا هم نصب کردی ؟؟؟؟

کار چه از محکم کاری عیب نمی کنه

vapa_71
جمعه 31 خرداد 1392, 23:07 عصر
توی سیستم کاربر چی اونجا هم نصب کردی ؟؟؟؟

کار چه از محکم کاری عیب نمی کنه

داداش توی سیستم خودم اجرا نمیشه . میشه کدهاشو شرح بدی ؟

vapa_71
جمعه 31 خرداد 1392, 23:19 عصر
مرسی دوست عزیز کد رو به شکل زیر تغییر دادم درست شد ممنونم

DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.RegData("dt1", Ds);
stiReport1.Show();

برای بقیه دوستان هم توضیح میدم که انشالله به دردشون بخوره .
توی قسمت design Report نرم افزار استیمول هم روی قسمت Data Sources کلیک راست میکنیم و و New Data Sources رو انتخاب میکنیم و گزینه Data from DataSet.DataTable رو انتخاب میکنیم و یک نام میدیم مثل dt1 و تمامی فیلد های دیتاگرید رو اونجا add میکنیم .

khokhan
جمعه 31 خرداد 1392, 23:20 عصر
داداش توی سیستم خودم اجرا نمیشه . میشه کدهاشو شرح بدی ؟

:افسرده::ناراحت:

ابتدا گریدتون رو پر می کنین حالا هر جور که دوست داشتین من دوتا تکس گذاشته بودم با یه باتن :لبخند:

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

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


DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}

بعدش هم یه دیتاست و دیتاتیبل درست شده ربط می دادم به این دیتا ست

DataSet Ds = new DataSet();
Ds.Tables.Add(table);


ودر نهایت گزارش موجود در پوشه dibug پروژه رو به این دیتاتیبل وصل می کردم همین


Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
// stiReport1.Design();
stiReport1.Show();


اینهم کل کدهای مربوط به همون باتن :




private void button2_Click(object sender, EventArgs e)
{
DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);

Stimulsoft.Report.StiReport stiReport1 = new Stimulsoft.Report.StiReport();
stiReport1.Load(System.Windows.Forms.Application.S tartupPath + @"\TestReport.mrt");
stiReport1.RegData(table);
// stiReport1.Design();
stiReport1.Show();
}

khokhan
جمعه 31 خرداد 1392, 23:22 عصر
آخیش:لبخند::لبخند::لبخند::لب ند:

vapa_71
جمعه 31 خرداد 1392, 23:26 عصر
آخیش:لبخند::لبخند::لبخند::لب ند:

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

intel_amd
شنبه 01 تیر 1392, 02:40 صبح
dll هائی که گفتین هم داخل debug هستن اما بعد از زدن دکمه گزارش باز ارور میده

vapa_71
شنبه 01 تیر 1392, 08:53 صبح
dll هائی که گفتین هم داخل debug هستن اما بعد از زدن دکمه گزارش باز ارور میده

داداش کد ها رو به اون شکل که گفتم تغییر بده درست میشه پست 12

intel_amd
شنبه 01 تیر 1392, 14:13 عصر
در واقع فقط این خطو stiReport1.RegData(table); به این stiReport1.RegData("dt1", Ds); تغییر دادین دیگه؟
این کارو کردم باز رو قسمت show ارور گرفت
من استیمول نصب ندارم فقط dll ها هستند تا اجرا شه و اون تغییرات توی دیزاین استیمولو نمیتونم انجام بدم لطفا آخرین نسخه استیمولو بدین نصب کنم . vs2012 نصبه

amir200h
شنبه 01 تیر 1392, 15:17 عصر
سلام
عزیز جان فکر نکنم دیگه ساده تر و کوتاه تر و خوشگل تر :بامزه:از این نمونه که درست کردم بتونی پیدا کنی :لبخند:

http://uplod.ir/5jqlffru5nbk/dgv_to_stir.rar.htm

کوتاه ومفید تنها در 14 سطر کل گریدتون رو می ریزه تو استیمول

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


من خودم اینجوری مینویسم


var dt1 = ((DataTable)dataGridView1.DataSource).Copy();

stiReport1.Load("Report.mrt");
stiReport1.RegData("DT1", dt1);
stiReport1.Show();

intel_amd
شنبه 01 تیر 1392, 15:26 عصر
اینم نشد !

vapa_71
شنبه 01 تیر 1392, 15:32 عصر
داداش از این لینک دانلودش کن

http://soft98.ir/software/programming/3833-Stimulsoft-Reports-Ultimate.html

اینم راهنمای نصب و ک-ر-ک http://barnamenevis.org/showthread.php?381989-%D8%B1%D8%A7%D9%87%D9%86%D9%85%D8%A7%DB%8C-%D9%86%D8%B5%D8%A8-Stimulsoft-Reports.Ultimate-2012.1-Trial&p=1728015#post1728015
برای انجام تنظیماتش باید نرم افزار رو نصب کنی اون کدی که من گذاشتم کار میده اگه خواستی بگو نمونه برنامشو بذارم واست البته اول استیمول رو نصب کن

amir200h
شنبه 01 تیر 1392, 15:54 عصر
این یه آموزش (http://www.daneshjooyar.com/%D9%81%DB%8C%D9%84%D9%85-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%86%D8%B1%D9%85-%D8%A7%D9%81%D8%B2%D8%A7%D8%B1-%DA%AF%D8%B2%D8%A7%D8%B1%D8%B4-%DA%AF%DB%8C%D8%B1%DB%8C-stimulsoft-reports/)

vapa_71
سه شنبه 04 تیر 1392, 11:54 صبح
دوستان من از این کد استفاده کردم اما یه مشکل داره کسی میتونه بگه اشکال کجاست
وقتی 1 بار دکمه چاپ رو میزنم مشکلی نیست اما اگه داخل دیتاگرید تغیر (اضافه یا کم کردن) انجام بشه گزارش تغییر نمیکنه و همون گزارش دوباره واسه چاپ میاد

DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.RegData("dt1", Ds);
stiReport1.Show();

vapa_71
سه شنبه 04 تیر 1392, 13:19 عصر
دوستان من از این کد استفاده کردم اما یه مشکل داره کسی میتونه بگه اشکال کجاست
وقتی 1 بار دکمه چاپ رو میزنم مشکلی نیست اما اگه داخل دیتاگرید تغیر (اضافه یا کم کردن) انجام بشه گزارش تغییر نمیکنه و همون گزارش دوباره واسه چاپ میاد

DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.RegData("dt1", Ds);
stiReport1.Show();
کسی مشکل این کد رو میدونه ؟

vapa_71
سه شنبه 04 تیر 1392, 13:34 عصر
مشکل حل شد 1 خط کد کم داشت اینم اصلاح شده ی کد


DataTable table = new DataTable("DGV_Rows");
foreach (DataGridViewColumn column in dataGridView1.Columns)
table.Columns.Add(column.Name, typeof(string));
for (int i = 0; i < dataGridView1.Rows.Count; i++)
{
table.Rows.Add();
for (int j = 0; j < dataGridView1.Columns.Count; j++)
{
table.Rows[i][j] = dataGridView1[j, i].Value;
}
}
DataSet Ds = new DataSet();
Ds.Tables.Add(table);
stiReport1.Load("Report.mrt");
stiReport1.RegData("dt1", Ds);
stiReport1.Show();