PDA

View Full Version : چاپ اطلاعات



rahil_2008
پنج شنبه 30 مهر 1388, 14:31 عصر
سلام دوستان
من باید یه برگه امتحانی را از روی دو تا جدولexam و question طراحی کنم به این صورت که سربرگ صفحه که همون مشخصات امتحان هست را باید از جدول exam و سوالات را از جدولquestion بگیرم و طوری باید این صفحه را طراحی کنم که مثل یک صفحه امتحانی واقعی باشه و در نهایت بشه ازش پرینت گرفت، من می خواستم این کارو تو کریستال ریپورت انجام بدم ولی نتونستم سربرگشو طراحی کنم. می خوام ببینم کسی راه بهتری می دونه؟ راهی بغیر از کریستال ریپورت؟

esmartiz_red
پنج شنبه 30 مهر 1388, 14:46 عصر
ببین دوست عزیز به نظر من بهترین راه استفاده از برنامه های ریپورت هست
اما شما می تونی با استفاده از فرم هم همچین کاری کنه
مثلا برگه امتحانی مورد نظرتو با photoshop یا corel طراحی کنی بعد عکس رو بزاری background فرمت بعد هم با استفاده از textbox مقادیرتو قرار بدی بعد هم از فرم پرینت بگیری که من پیشنهاد نمی کنم این کارو کنی بهترین راه همون کریستال ریپورت هست

Yasersadegh
پنج شنبه 30 مهر 1388, 15:34 عصر
سلام دوستان
دوست عزيز به نظر من شما طرف كريستال ريپورت و از اين جور چيزا نرو!!! بهترين كار استفاده از كلاس printer و چاپ اطلاعات به هر شكلي كه خودت مي خواي هست!!!
به نمونه كوچيك زير توجه كن!!!!:متفکر:



private void buttonprint_Click(object sender, EventArgs e)
{
PrintDocument pd = new PrintDocument();
pd.DocumentName = "Test Print";
pd.PrinterSettings.PrinterName = "printer Name";
pd.PrintPage += new PrintPageEventHandler(pd_PrintPage);
}

private void pd_PrintPage(object sender, PrintPageEventArgs ev)
{

SolidBrush br=new SolidBrush(Color.Black);
Font df=new Font("Arial",14);
Pen p = new Pen(Color.Black, 5);
ev.Graphics.DrawRectangle(p, 10, 10, 450, 450);
ev.Graphics.DrawLine(p, 10, 100, 450, 100);
ev.Graphics.DrawLine(p, 10, 200, 450, 200);
ev.Graphics.DrawLine(p, 10, 300, 450, 300);
ev.Graphics.DrawLine(p, 10, 400, 450, 400);
ev.Graphics.DrawLine(p, 10, 450, 450, 450);
ev.Graphics.DrawString(dataGridView1.Rows[0].Cells[0].Value.ToString(), df, br, 20, 30);
}


شما بدين ترتيب مي توني هر داده اي رو چه در ابجكتهاي برنامت چه از ديتابيس چه داده ثابت چه از مقدار متغيرها و هر شكل گراقيكي رو با هر رنگ و هر فونتي در هر جاي صفحه كاغذ كه خواستي چاپ كني!!!:لبخندساده:
ابزارهايي مثل كريستال ريپورت دست آدم رو ميبندن و هر جور كه بخوان بايد باهاشون كار كنيم!!!:افسرده:
من خودم الان چندين ساله كه برنامه نويسي مي كنم هميشه از اين روش استفاده كردم و خيلي عاليه!!!:لبخند: فقط اولش يكم سخته ولي بعد مي بيني كه كار خيلي سختيم نيست!!! البته به سختيشم مي ارزه!!!!:چشمک:
موفق باشي:چشمک:

sara.f
پنج شنبه 30 مهر 1388, 17:00 عصر
سلام دوستان
من باید یه برگه امتحانی را از روی دو تا جدولexam و question طراحی کنم به این صورت که سربرگ صفحه که همون مشخصات امتحان هست را باید از جدول exam و سوالات را از جدولquestion بگیرم و طوری باید این صفحه را طراحی کنم که مثل یک صفحه امتحانی واقعی باشه و در نهایت بشه ازش پرینت گرفت، من می خواستم این کارو تو کریستال ریپورت انجام بدم ولی نتونستم سربرگشو طراحی کنم. می خوام ببینم کسی راه بهتری می دونه؟ راهی بغیر از کریستال ریپورت؟
سلام
چرا نتونستی ؟ با چه چیزی مشکل داشتی؟
به نظر من هم کریستال مناسبه و امکانات زیادی هم داره.
بله استفاده از کلاس prnter هم یک راهه ولی به این معنی نیست که کریستال راه بدی هست.

دوست عزيز به نظر من شما طرف كريستال ريپورت و از اين جور چيزا نرو!!!
اتفاقا به نظر من طرف اینا برو و سعی کن که یادشون بگیری چون خیلی به کارت می آیند.
حالا بگو چه مشکلی با کریستال داشتی که می گی نشد؟!

corona
پنج شنبه 30 مهر 1388, 21:25 عصر
به نظر من هم با کریستال خیلی راحت میتونی این کار رو انجام بدی . بگو مشکلت با کریستال چی بوده تا حلش کنیم با هم .

rahil_2008
جمعه 01 آبان 1388, 14:23 عصر
راستش من کار کردن با کریستال رو به صورت وﻳژوالی بلدم ولی نمی دونم چه جوری می شه به text object، مقداری را از پایگاه داده نسبت داد؟ البته یکی از دوستان یه تابع برای این کار بهم معرفی کرده بود با کلی کد. ولی من اصلا نمی دونستم اون کدو باید کجا بنویسم ضمن اینکه اگرم اون کدو بنویسم نمی دونم که با توجه به اینکه کریستال ریپورت را وﻳژوالی ایجاد کردم بازم اون کد کار می کنه یا نه؟

sara.f
جمعه 01 آبان 1388, 14:41 عصر
راستش من کار کردن با کریستال رو به صورت وﻳژوالی بلدم ولی نمی دونم چه جوری می شه به text object، مقداری را از پایگاه داده نسبت داد؟ البته یکی از دوستان یه تابع برای این کار بهم معرفی کرده بود با کلی کد. ولی من اصلا نمی دونستم اون کدو باید کجا بنویسم ضمن اینکه اگرم اون کدو بنویسم نمی دونم که با توجه به اینکه کریستال ریپورت را وﻳژوالی ایجاد کردم بازم اون کد کار می کنه یا نه؟


سلام من هنوزم مشکلت با کریستال را متوجه نشدم.
چرا میخوای به text object مقدار بدی؟
مگه نمیگی که اطلاعات را از دیتا بیس می گیری، خب فیلدهای مورد نظرت را از جدول انتخاب کن و در صفحه کریستال بکش و در هر جایی از صفحه که دوست داشتی( قسمت header) و صفحتو طراحی کن.
اگر من درست مشکلتو متوجه نشدم بیشتر توضیح بده.

corona
یک شنبه 03 آبان 1388, 08:07 صبح
ببین دوست من روال کلی اینه که هر وقت میخوایم با کریستال کار کنبم یک crystal report viewer میندازی از Toolbox روی فرمت و یک کریسال ریپورت به پروژت اضافه توی Add New Item از قسمت Reporting میتونی اضافش کنی. بعد چیزی که لازم داری اینه که یک دیتاست به برنامت اضافه کنی . حالا من هر وقت می خواستم report گیری کنم همیشه یک Stored Procecedure دارم که توی دیتابیس ذخیره هستش. فقط کاری که لازمه انجام بدم اینه که محیط Desgin دیتاست رو باز کنید و بعد از توی Server Explorer دیتابیست رو باز کنی و اون Stored Procedure هایی که قراره داده های مورد نیاز Report شما رو بسازن درگ کن داخل محیط Designer دیتاستت . بعد حالا اون کریستال که به فرمت اضافه میکنی توی ویزارد ازت میخواد دیتاسورس این داکیومنت رو مشخص کنی که برای اینکار از قسمت Ado .net اون دیتاستی که به برنامت تو مرحله قبل اضافه کردی رو می بینی ، اونو انتخاب و از داخل اون Storedprocedure که داده های این ریپورتت رو میسازن بفرست سمت راست که به ریپورت اضافه بشه.بعد Next و تو مرحله بعد باید فیلدهایی از این StoreProcedure که میخوای توی گزارش نهایی نشون داده بشن رو انتخاب کن و بفرست سمت راست. بعد Finish. حالا کریستال داکیومنتت نشون داده میشه که در قسمت Header سربرگ صفحه مشخصه , در قسمت Detail هم بدنه گزارش نشون داده خواهد شد.حالا کارت این طرف تموم شده. باید بری تو کد سی شارپت اونجایی که میخوای گزارش رو بزنی که نمایش داده بشه ، مثلا توی کد کلیک یک باتون یا هر چی . یادت باشه که روی این فرم یک Crystal report viewer هم اضافه کردی . حالا کاری که لازمه اینه که اون StoredProcedure که به Crystalreport وصل کردی رو اجرا کنی و نتیجش رو مثلا در قالب یک DataTable بفرستی برای ریپورتت و بعد اون کرستال ریپورت داکیومنت رو به Crystalreport viewer بایند کنی .

پژوهنده
یک شنبه 03 آبان 1388, 11:28 صبح
سلام.
من با کریستال ریپورت یه مشکلی دارم. من همه کاری که لازم بود کردم. همه کارهایی که شما گفتید. ولی توی ریپورتم اطلاعات دیتا بیس را نشون نمیده . چی کار کنم؟ خیلی این کاری که می خوام بکنم حیاتی هست و فوری. ممنون:ناراحت:

sara.f
یک شنبه 03 آبان 1388, 17:07 عصر
سلام.
من با کریستال ریپورت یه مشکلی دارم. من همه کاری که لازم بود کردم. همه کارهایی که شما گفتید. ولی توی ریپورتم اطلاعات دیتا بیس را نشون نمیده . چی کار کنم؟ خیلی این کاری که می خوام بکنم حیاتی هست و فوری. ممنون:ناراحت:
در این صورت به تالار crystal repor مراجعه کنید، به جواب خواهید رسید، در صورتی که به جواب نرسیدید در آنجا تاپیک جدیدی را ایجاد کنید و به طور کامل مشکل خودتون با crystal را شرح بدید.
پیروز باشی.

yekchehellom
چهارشنبه 10 فروردین 1390, 01:12 صبح
با سلام
من کد آقای yasersadegh رو دقیقا کپی کردم ، اسم پرینترم "HP LaserJet 1018" ....
اما نشد!!! پرینتر هیچ اکس العملی نشون نمیده .
ممنون میشم اگه راهنمایی کنید.چیز خاصی باید به فرم یا رفرنسام اضافه کنم؟

ehsanara
چهارشنبه 10 فروردین 1390, 01:27 صبح
دوست عزيز به نظر من شما طرف كريستال ريپورت و از اين جور چيزا نرو!!! بهترين كار استفاده از كلاس printer و چاپ اطلاعات به هر شكلي كه خودت مي خواي هست!!!

من نمیدونم Crystal به این خوبی چرا دیگران رو ازش منع میکنید


به نظر من هم کریستال مناسبه و امکانات زیادی هم داره.
بله استفاده از کلاس prnter هم یک راهه ولی به این معنی نیست که کریستال راه بدی هست.
کاملا موافقم
پاراکترها رو چطوری به کریستال فرستادی؟
از دیتابیس استفاده می کنی؟