PDA

View Full Version : سوال در مورد پشتیبانی crystalreport از تاریخ شمسی



coldsummer
دوشنبه 22 مرداد 1386, 01:35 صبح
سلام دوستان
من می خوام تو ی گزارشاتم از تاریخ شمسی استفاده کنم یعنی کاربر تاریخ این گزارش رو به
صورت پویا مشاهده کنه می خواستم بدونم این عمل با crystalreport‌چه جوری امکان پذیره
ضمنا من c#.net 2005 کار می کنم
اگر کسی پاسخ منو می دونه لطف کنه منو راهنمایی کنه

Here is the start point

sm
دوشنبه 22 مرداد 1386, 06:50 صبح
میتونین با استفاده از پارامتر، تاریخ فارسی رو از محیط دات نت به کریستال پاس بدین.

موفق باشید

coldsummer
چهارشنبه 24 مرداد 1386, 01:27 صبح
عذر می خوام منظورتون استفاده از selection formula هست ؟

sm
چهارشنبه 24 مرداد 1386, 06:45 صبح
خیر... همون پارامتر هست.
شما توی کریستال یه پارامتر اضافه کنین و بعد از توی برنامه و قبل از اجرای گزارش این مقدار را بهش رد کنین.
البته میتونین از DLL هم استفاده کنین که دردسرش بیشتر از این حالت ارسال بوسیله پارامتر هست.

موفق باشید

miassus10
پنج شنبه 25 مرداد 1386, 20:25 عصر
آقا ببخشید میشه یک مثال بزنید که چجوری میشه یک مقدارو از محیط وی بی به crystal report پاس داد؟

sm
جمعه 26 مرداد 1386, 12:47 عصر
عیدتون مبارک... تولد امام حسین (ع) مبارک
-----------------------------------------------------------
دو روش هست.
اگه شما با خود فایل گزارش کار میکنین یک کم کدش طولانیه و دردسر داره که نمونش رو توی همین بخش دوستان گذاشتن.
یه روش دیگه هست که شما میتونین یه متغیر از گزارشتون تعریف کنین و از اون به بعد تا نهایتا که باید Data source مربوط به Crystalreport Viewer رو برابر اون گزارش قرار بدین با این متغیر کار کنین. البته این روش رو من بسیار به روش اول ترجیح میدم چونکه بزرگترین حسنش اینه که برنامه شما دیگه مستقل از مسیر فیزیکی فایل گزارشتون میشه!!!! و جزئی از فایل exe برنامه خواهد شد.
بگذریم... برای اینکه در روش دوم پارامتر رد کنین به این طریق عمل کنین :


Public Report As New ReportFile
....
....
....
Report.SetParameterValue("Start", StartDate.ToString.Trim)


موفق باشید

miassus10
جمعه 26 مرداد 1386, 19:54 عصر
آقا من این خط آخرو قبل از تخصیص ریپورت به بانک نوشتم که اینطوریه:


crpt.SetParameterValue("text5", Now.Date.ToString)

وموقع اجرا این پیغام خطا رو نشون داد:
Invalid index. (Exception from HRESULT: 0x8002000B (DISP_E_BADINDEX)

text5 یک تکست باکس تو ریپورتمه

sm
شنبه 27 مرداد 1386, 08:49 صبح
type اون رو چک کنین که با مقدار ارسالی یکی باشه
نام پارامتر هم باید عینا همونی باشه که توی گزارش هست... به حروف کوچیک و بزرگ حساسه
میتونین با ایندکس اون هم کار کنین که راحت باشین

موفق باشید

miassus10
شنبه 27 مرداد 1386, 18:52 عصر
PrivateSub frmreport_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
OleDbConnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Application.StartupPath & "\mp.mdb;Jet OLEDB:Database Password=miassus"
OleDbConnection1.Open()
ds1.Reset()
da1.SelectCommand.CommandText = "SELECT * FROM stock"
da1.Fill(ds1, "stock")
Dim dt1 As DataTable
dt1 = ds1.Tables("stock")
Dim crpt AsNew inventoryrpt
crpt.SetParameterValue("Text5", "ff")
crpt.SetDataSource(ds1)
Me.CrystalReportViewer1.ReportSource = crpt
CrystalReportViewer1.DisplayGroupTree = False
EndSub


من این کدو مینویسم ولی همچنان همون پیغامو میده!!!

sm
یک شنبه 28 مرداد 1386, 06:52 صبح
inventoryrpt نام فایل گزارشتون هست؟
با اندیس امتحان نکردین؟

miassus10
یک شنبه 28 مرداد 1386, 18:42 عصر
بله، inventoryrpt اسم فایل کریستاله
نه نمیدونستم چجوری میشه با ایندکس کار کرد

sm
دوشنبه 29 مرداد 1386, 07:36 صبح
برای بدست آوردن اندیس کافیه از Break Point استفاده کنین، میتونین تموم اندیسها رو بدست بیارین.
جای خط 1 رو با 2 عوض کنین :


1- crpt.SetParameterValue("Text5", "ff")
2- crpt.SetDataSource(ds1)


موفق باشید

fereshtehrahimi
چهارشنبه 07 شهریور 1386, 19:01 عصر
این کد دقیقا بهت جواب می دهد ممن ازش استفاده کردم
Protected Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim n As SqlConnection = New SqlConnection("Initial Catalog=shoes;data source= localhost;integrated security=sspi;")
n.Open()
Dim strsql As String = "select * from tblproduct where dat between '" + TextBox1.Text + "' and '" + TextBox2.Text + "'"

Dim m As SqlDataAdapter = New SqlDataAdapter(strsql, n)
Dim d As DataSet = New DataSet()
m.Fill(d, "tblproduct")

Dim rep As ReportDocument = New ReportDocument()
Dim reppat As String = Server.MapPath("CrystalReport2.rpt")
rep.Load(reppat)
rep.SetDataSource(d)
CrystalReportViewer1.ReportSource = rep
CrystalReportViewer1.ShowFirstPage()
n.Close()
End Sub