PDA

View Full Version : آموزش ساده وکاربردی انتقال اطلاعات از فرم (هر چی که باشه مثلا دیتاگرید) به فرم گزارش(مثلا کریستال)



svhasvha
یک شنبه 21 مهر 1392, 10:02 صبح
سلام دیدم بچه ها خیلی راجب انتقال اطلاعات از دیتا گرید و...... به فرم های گزارش سوال میپرسن و کلا مشکل با گزارش گیری دارن
خواستم یه توضیحات وآموزش ساده وکوچیکی بدم شاید تونستم کمکی کرده باشم
فقط بچه ها خداوکیلی بچه سوال نپرسید هر برنامه ممکنه هزار تا حالت مختلف تو ذهن منو شما ایجاد کنه قرار نیست که همه چیز رو ببپرسید راهش اینه که خودتون دست به کار بشید, ونسبت به این آموزش دید کلی داشته باشید البته سعی میکنم با یه مثال کار بردی بگم
حالا طبق چیزای که از سوالات بچه ها فهمیدم من فرض میکنم
مثلا
1 تو فرمم یه دیتا گرید دارم(یا هر چیز دیگه ای)
2 نمیخوام برای گزارش گیری به بانک وصل بشم(به خاطر مشکلات ودردسر ستاپ سازی و.....)
3 از کریستال استفاده میکنم(یا ریپورت خود ویژوال یا.....)
4 رو فرم یه کلید برای گزارش گیری دارم
خوب تو رویداد کلیک کلید
وارد کنید


DataSet ds = new DataSet();

این چی بود ؟؟؟
(از اساتید معذرت میخوام من کلا سعی میکنم ساده توضیح بدم خدمت شمایی که داری میخوونی توهین نشه ,دلیلشم رو میتونید از مطالب قبلیم بخونید)
یه دیتا ست جدید تعریف کردیم واسه نگهداری جدولامون تو
آینده نچندان دور:لبخند:

حالا در ادامه کد زیر رو وارد کنید
DataTable dt = new DataTable(); dt.Columns.Add("id", typeof(Int16)); dt.Columns.Add("name", typeof(string)); dt.Columns.Add("family", typeof(string));
این چی بود؟؟
یه جدول که مثلا سه تا فیلد ای دی و نام ونام خانوادگی رو که اولی جنسش عدد صحیح ودوتای دیگه رشته
نکته: به تعداد فیلد های که تو دیتا گرید دارید تو جدولتون فیلد بسازید!!!!

حالا باید دونه دونه سلول های دیتا گرید رو بریزیم تو جدولمون
چطوری؟
با یه دستور فور یا فور ایچ یا هر روشی که بلدین مثلا

foreach (DataGridViewRow dgv in DataGridView1.Rows) { dt.Rows.Add(dgv.Cells[0].Value, dgv.Cells[1].Value, dgv.Cells[2]); }
خوب حالا یک سوال ؟؟؟
این دیتا ست به صورت کد درست شده تو کریستال نمیاااااااااااااااااااددد دد:عصبانی++:(به صورت فیزیکی نمیشه باهاش کار کرد)
حالا چیکار کنیم؟؟؟؟
خوب به ادامه کد ها این کد رو اضافه کنید
ds.Tables.Add(dt); ds.WriteXmlSchema("Sample.xml");
این کد اول جدولی رو که ساختین به دیتا ستتون اضافه میکنه وبعد از دیتا ست یه فایل Xml میسازه(حالا میگم چرا!!!!!)
حالا
یه صفحه کریستال یا ریپورت خود ویژوال به پروژه اضافه کنید
http://www.codeproject.com/KB/grid/599943/b.jpg
بعد
http://www.codeproject.com/KB/grid/599943/c.JPG
بعدشم
http://www.codeproject.com/KB/grid/599943/d.JPG
حالا گزینه
ADO.NET(Xml).
بعد
http://www.codeproject.com/KB/grid/599943/e.JPG
حالا بروز رو بزنید و برید به آدرسی که پروژه زخیره شده
و برید تو پوشه
bin
بعدش
debug
و اونجا دنبال فایل
Sample
چی؟؟؟؟
نیست؟؟؟؟
شوخی نکن
بزا ببینم
اهااااااااااا!!!!!!
یه بار برنامه رو اجرا کنید و رو کلید چاپ , همون کلیدی که تو رویداد کلیلکش کد نوشتیم
کلیک کنید بعد برنامه رو ببندید ودوباره برید تو همون پوشه که گفتم
هست؟؟؟؟
دیدی!!!
خوب چرا؟
به خاطر اینکه با یه بار اجرا کردن یه فایل XML درست شد همون خط که گفتم چرا شو میگم
حالا هر بار که کلید رو بزنید اون فایل آپدیت میشه ازاین طرف هم شما میتونی به صورت فیزیکی تو کریستال با جدولت کار کنی
و مرتبشون کنی میگی نه نگاه کن
مراحل رو انجام بده و فایل رو انتخاب کن تا
http://www.codeproject.com/KB/grid/599943/x.JPG
حالا
http://www.codeproject.com/KB/grid/599943/x.JPG
http://www.codeproject.com/KB/grid/599943/y.JPG
دیدی!!!!!
خوب حالا فرم گزارشتو هر طور که میخوای مرتب کن والباقی کارا

تو رویداد لود ریپورتر یا تو رویداد کلیک کلیدی که ریپورتر و لود میکنه یا....
از این کد استفاده کن


CrystalReport1 cr = new CrystalReport1(); cr.SetDataSource(ds); crystalReportViewer1.ReportSource = cr;
نکته:
این اموزش کلی بود
دیگه همش بستگی به خلاقیت خودتون داره
مثلا میتونید به جای دیتا گرید جدولتون رو باهر چیز دیگه ای که خودتون دوست داری پر کنید
چه میدونم تکس باکس ......
اگر هم از ریپورتر دیگه ای دارید استفاده میکنید حالت کلیش همینه
و . . . . . .

به دردتون خورد؟؟؟
یاعلی موفق باشید