PDA

View Full Version : چاپ اطلاعات موجود ديتاگريد در كريستال ريپورت



Masoudse7en
سه شنبه 30 خرداد 1391, 23:34 عصر
سلام.تو يه قسمت از برنامه به يك مشكلي برخوردم كه ميخوام اطلاعات ديتاگريد رو به حالت چاپ اونم داخل كريستال ريپورت ببرم.
مثلا بين دو تاريخ جستجو انجام ميشه اطلاعات داخل گريد فيلتر ميشن ميخوام اطلاعات كه تو گريد هست رو به كريستال ريپورت بفرستم.خيلي سعي كردم موفق نشدم.
كد زير رو ببينيد :
Dim StrSql As String
StrSql = "select * from v_kala "
Dim adapter As New OleDb.OleDbDataAdapter(StrSql, con)
Dim dt As New DataTable("v_kala")
adapter.Fill(dt)
DataGridView1.DataSource = dt

Dim Report As Form13 = New Form13

Dim mReport As CrystalReport1 = New CrystalReport1

mReport.SetDataSource(dt)

Report.CrystalReportViewer1.ReportSource = mReport

Report.ShowDialog()

دوستان جستجو هم كردم ولي چيزي نبود كه كمكم كنه

Masoudse7en
پنج شنبه 01 تیر 1391, 13:47 عصر
دوستان وقت زيادي ندارم خيلي جستجو كردن هم گوگل و هم انجمن ميشه كمك كوچيك بكنيد

ali_najari
پنج شنبه 01 تیر 1391, 21:05 عصر
دوست عزیز میشه نمونه برنامه بزارید با بانک اطلاعاتیتون رو؟

Masoudse7en
جمعه 02 تیر 1391, 00:28 صبح
اينم يه قسمت از برنامه كه جداش كردم.

خيلي مشخصه كه وقتي بين دو تاريخ جستجو ميشه و داخل ديتاگريد نمايش داده ميشه ميخوام همون اطلاعات رو چاپ بگيرم.

barnamenevisforme
جمعه 02 تیر 1391, 00:38 صبح
سلام
دوست عزیز شما هیچگونه طراحی برای crystal report انجام ندادی.روی crystal report viewerمثلث سمت راست،راست کلیک کن،design a crystal report رو انتخاب کن،طبق مواردی که پیش روتون قرارمیگیره جلو برید(یعنی item های جدول مورد نظر رو توش بچینید).بعد این crystal report رو به crestal report viewer معرفی کنید.
بقیش هم مثل کد خودتونه.

Masoudse7en
جمعه 02 تیر 1391, 01:05 صبح
شما نمونه رو ببينيد.همه اين كارا انجام شده.توضيحات رو كامل اگر بخونيد متوجه منظورم ميشيد

ali_najari
جمعه 02 تیر 1391, 13:42 عصر
دوست عزیز من Crystal رو ندارم چون من از Visual Studio 2010 استفاده میکنم
به شما هم پیشنهاد میکنم از Fast Report استفاده کنید چون فوق العادست توی گزارش گیری!

ولی به هر حالت واسه اینکه اطلاعات داخل دیتاگیرید رو ارسال کنی بدون اینکه بخوای دوباره بری و از بانک اطلاعاتی بخونی و به همون صورت فیلتر شده گزارش بگیری بهترین راهش فکر کنم این باشه!
فقط کد زیر را داخل Button مخصوص پرینت بگذارید و بقیه کدها رو پاک کنید
البته توجه داشته باشید که حتما باید داخل دیتاگیرید اطلاعاتی وجود داشته باشه یعنی حتما بهش DataSource داده باشید:



Dim TBL As DataTable = DataGridView1.DataSource

Dim Report As Form13 = New Form13

Dim mReport As CrystalReport1 = New CrystalReport1

mReport.SetDataSource(TBL)

Report.CrystalReportViewer1.ReportSource = mReport

Report.ShowDialog()

Masoudse7en
جمعه 02 تیر 1391, 14:46 عصر
همه اين كارا رو انجام ميدم ولي بازم اطلاعات كل را نشون ميده

aftabeshargh
جمعه 02 تیر 1391, 14:57 عصر
سلام
یه آموزش مختصر و مفید برای کار با کریستال به صورت pdf ساختم امیدوارم بدردتون بخوره:بامزه:

در ضمن با این روش شما تو سیستم کاربر دیگه " هنگام انجام چاپ و باز شدن کریستال user " pass میخواد . :چشمک:

بازم مشکلی بود پیام خصوصی بزارید

موفق باشید .

barnamenevisforme
جمعه 02 تیر 1391, 16:57 عصر
سلام
دوست عزیز فرمایش شما درست بود،موقع پاسخ چون کار داشتم کمی عجله کردم.
دوستمون یه فایل آموزش رو گذاشتن سعی کنید اذش نهایت استفاده رو ببرید،منم سعی کردم همون پروژه خودتون رو یه مقدار تغییر بدم،البته زمان کافی نداشتم.

aftabeshargh
جمعه 02 تیر 1391, 21:00 عصر
سلام
نمونه برنامه خودتون رو یه تغییر جزئی دادم ببینید.
تو تکست باکس نام کالا رو تایپ کنید منظورم nkala هستش مثلا اول "کفش" رو تایپ کنید "ک" بعد از دیدن نتیجه جستجو دکمه پرینت رو بزنید تا رکوردهای موجود در دیتاگرید چاپ بشه .

اگه بازم سوالی بود در خدمتم.

ali_najari
جمعه 02 تیر 1391, 23:12 عصر
شرمندام من چون کریستال نداشتم نمیتونستم تست کنم ولی با Fast report خیلی راحت تمام کارهایی را که بخوام انجام میدم
بازم به شما پیشنهاد میکنم از Fast Report استفاده کنید چون خیلی کاملتره

mehdi1359a
پنج شنبه 15 تیر 1391, 08:26 صبح
دوست عزيز لطفا كامپوننت فست ريپورت در ويژوال استديو 2010 رو آپلود كنيد.ممنون

RAHA_AVA
سه شنبه 07 شهریور 1391, 16:01 عصر
منم مشکلم همینه
کدم اینه کریستال ریپورتم با عنوانه ستونام که گذاشتمشون تو کریستال ریپورتم نشون داده میشه تو کریستال ویور ولی اطلاعات گرید نه چرااااااااااااا؟!!!!!!!!!!!!!!!!!! !

if (dt.Rows.Count > 0)
{
dataGridView1.DataSource = dt;
ReportDocument rd = new ReportDocument();
rd.FileName = "Cryresefareshat.rpt";
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Show();
Fr_main.cn.Close();

}

barnamenevisforme
سه شنبه 07 شهریور 1391, 18:27 عصر
سلام
اینو امتحان کنید:
if (dt.Rows.Count > 0)
{
dataGridView1.DataSource = dt;
ReportDocument rd = new ReportDocument();
rd.FileName = "Cryresefareshat.rpt";
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.refreshreport;
Fr_main.cn.Close();

}

RAHA_AVA
سه شنبه 07 شهریور 1391, 18:49 عصر
نشد بازم !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!من هر چقدر سرچ کردم همه کدا مث مال من بود ولی چرا جواب نمیده آخه؟!!!!!!!!!!!!!!!!!!!!

RAHA_AVA
سه شنبه 07 شهریور 1391, 19:23 عصر
خواهشا دوستان من عجله دارمممممممممممممممممممممم مممم

uniqueboy_ara
سه شنبه 07 شهریور 1391, 22:55 عصر
اینم خدمت شما :)

RAHA_AVA
چهارشنبه 08 شهریور 1391, 00:24 صبح
این کدی که uniqueboy_ara دادین ولی اینم جواب نمیده برا من یعنی هنگ میکنه و چیزیم نشون نمیده من dt که پره رو میریزم تو کریستال کده شما Dt رو از grid پر میکنه و میریزه ولی یه کار میکنن در اصل و هیچ کدوم جواب نمیدن!!!!!!!!!!!!!

dt.Clear();


foreach (DataGridViewRow dgvr in dataGridView1.Rows)
{
dt.Rows.Add(dgvr.Cells[0].Value, dgvr.Cells[1].Value);
}

dt.Rows.RemoveAt(dataGridView1.Rows.Count - 1);

ReportDocument dc = new ReportDocument();
dc.FileName = "ARA.rpt";
dc.SetDataSource(dt);
dc.SetParameterValue("Tarikh", dayt());
crystalReportViewer1.ReportSource = dc;

من یه فیلم آموزشیم دیدم دقیقا کارایی که کرد مث مال من بودو کدشم مثله من ولی با یه تابع کریستالو پر کرد و از گریدم نمیخوند ولی جواب داد!!!!!!!!!