behrooz69
پنج شنبه 01 اسفند 1392, 15:21 عصر
سلام . برای ارسال پارامتر تاریخ شمسی به کریستال ریپورت 2 راه داری .
یکیش اینه که بری تابع تاریخ فارسی برای کریستال ریپورت رو بگیری که اون یکم مشکل داره و پیشنهاد نمیشه .
دومیش اینه که با استفاده از ارسال پارامتر به کریستال اینکارو انجام بدی .
شما برای اینکار نیاز به کامپونت تاریخ شمسی Hm_FarsiCalender دارید که ضمیمه کردم.
خوب اول توی کریستال ریپروتت یه پارامتر درست کن به هر اسمی که میخوای مثلا : PrintDate ، یا PersianDate ، یا هرچی دوست داشتی . و اون پارامتر رو بکش
تو Header کریستال ریپورتت یا هرجایی که میخوای تاریخش چاپ شه .
116922
حالا برگرد به فرمی که میخوای تاریخ رو با استفاده از پارامترش بفرستی ، همون فرم پرینتتو میگم .
1 Lable بزار توی صفحت مثلا به نام LblTarikhPrint .
توی Form_Load صفحت این کد رو بنویس :
LblTarikhPrint.Text = HM_FarsiCalendar.FarsiDate.FarsiToday.FullNameDate
اینجا اومدم با استفاده از کامپوننت Hm_FarsiCalender تاریخ فارسی رو به لیبل خودم نسبت دادم.
حالا مرحله آخر :
توی دکمه ای که کد های پرینت و ارسال به کریستال ریپورتت هست برو و بعد از Report.SetDataSource این تیکه کد رو بنویس :
rpt.SetParameterValue("PersianDate", LblTarikhPrint.Text)
توضیح : اینجا من فرض رو بر این گرفتم که اسم پارامتر تاریخ رو توی کریستال PersianDate و اسم لیبل رو تو فرم ارسال گزارشتون LblTarikhPrint گذاشتید .
قسمت اول اسم پارامتریه که تو فرم کریستال مربوطه خودتون هست .
قسمت دوم مقداریه که واسه پارامتر خودتون توی کریستال ریپورتتون میفرستید .
اینم تیکه کد کامل ارسال گزارش و پارامتر برای چاپ در کریستال ریپورت :
Dim rpt As New اسم کریستال ریپورت شما
Dim myconnection As SqlConnection
Dim mycommand As New SqlCommand
Dim myda As New SqlDataAdapter
Dim myds As New دیتاست شما
Try
myconnection = New SqlConnection(کانکشن دیتابیس شما)
mycommand.Connection = myconnection
mycommand.CommandText = "SELECT * from جدول شما WHERE(فیلد مورد نظر=@فیلد مورد نظر)"
mycommand.Parameters.Add("@فیلد مورد نظر", SqlDbType.NVarChar, 50).Value = CboSearchByName.Text
mycommand.CommandType = CommandType.Text
myda.SelectCommand = mycommand
myda.Fill(myds, "جدول شما")
rpt.SetDataSource(myds)
rpt.SetParameterValue("PersianDate", LblTarikhPrint.Text)
FrmGozareshgiri.CrystalReportViewer1.ReportSource = rpt
FrmGozareshgiri.ShowDialog()
Catch ex As Exception
MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
دیگه این تیکه کد توضیح نداره هرچی لازم بود توش هست و واضحه
اینم کامپوننت تاریخ شمسی : 116923
امیدوارم واضح و مفید بوده باشه . یا حق
یکیش اینه که بری تابع تاریخ فارسی برای کریستال ریپورت رو بگیری که اون یکم مشکل داره و پیشنهاد نمیشه .
دومیش اینه که با استفاده از ارسال پارامتر به کریستال اینکارو انجام بدی .
شما برای اینکار نیاز به کامپونت تاریخ شمسی Hm_FarsiCalender دارید که ضمیمه کردم.
خوب اول توی کریستال ریپروتت یه پارامتر درست کن به هر اسمی که میخوای مثلا : PrintDate ، یا PersianDate ، یا هرچی دوست داشتی . و اون پارامتر رو بکش
تو Header کریستال ریپورتت یا هرجایی که میخوای تاریخش چاپ شه .
116922
حالا برگرد به فرمی که میخوای تاریخ رو با استفاده از پارامترش بفرستی ، همون فرم پرینتتو میگم .
1 Lable بزار توی صفحت مثلا به نام LblTarikhPrint .
توی Form_Load صفحت این کد رو بنویس :
LblTarikhPrint.Text = HM_FarsiCalendar.FarsiDate.FarsiToday.FullNameDate
اینجا اومدم با استفاده از کامپوننت Hm_FarsiCalender تاریخ فارسی رو به لیبل خودم نسبت دادم.
حالا مرحله آخر :
توی دکمه ای که کد های پرینت و ارسال به کریستال ریپورتت هست برو و بعد از Report.SetDataSource این تیکه کد رو بنویس :
rpt.SetParameterValue("PersianDate", LblTarikhPrint.Text)
توضیح : اینجا من فرض رو بر این گرفتم که اسم پارامتر تاریخ رو توی کریستال PersianDate و اسم لیبل رو تو فرم ارسال گزارشتون LblTarikhPrint گذاشتید .
قسمت اول اسم پارامتریه که تو فرم کریستال مربوطه خودتون هست .
قسمت دوم مقداریه که واسه پارامتر خودتون توی کریستال ریپورتتون میفرستید .
اینم تیکه کد کامل ارسال گزارش و پارامتر برای چاپ در کریستال ریپورت :
Dim rpt As New اسم کریستال ریپورت شما
Dim myconnection As SqlConnection
Dim mycommand As New SqlCommand
Dim myda As New SqlDataAdapter
Dim myds As New دیتاست شما
Try
myconnection = New SqlConnection(کانکشن دیتابیس شما)
mycommand.Connection = myconnection
mycommand.CommandText = "SELECT * from جدول شما WHERE(فیلد مورد نظر=@فیلد مورد نظر)"
mycommand.Parameters.Add("@فیلد مورد نظر", SqlDbType.NVarChar, 50).Value = CboSearchByName.Text
mycommand.CommandType = CommandType.Text
myda.SelectCommand = mycommand
myda.Fill(myds, "جدول شما")
rpt.SetDataSource(myds)
rpt.SetParameterValue("PersianDate", LblTarikhPrint.Text)
FrmGozareshgiri.CrystalReportViewer1.ReportSource = rpt
FrmGozareshgiri.ShowDialog()
Catch ex As Exception
MessageBox.Show(ex.Message, "error", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
دیگه این تیکه کد توضیح نداره هرچی لازم بود توش هست و واضحه
اینم کامپوننت تاریخ شمسی : 116923
امیدوارم واضح و مفید بوده باشه . یا حق