PDA

View Full Version : بازم پارامتر



z_barnamenevis
سه شنبه 15 خرداد 1386, 12:22 عصر
من در ارسال پارامتر به گزارشم مشکل دارم و این مشکل منو دیوونه کرده چون خیلی عجیبه
من در گزارشم دو تا پارامتر رشته ای تعریف کرده ام تا تاریخ و زمان شمسی را که درست می کنم را در آنها نشان بدهم
و با این دستورات:
dim cr as new cr
cr.setparametervalues("parameter1",mydate)
cr.setparametervalues("parameter2",mytime)
به این ترتیب به پارامتر ها مقدار می دهم اما گاهی اوقات بدون مشکل اجرا می شه و گاهی اوقات
load report failed
می شود از کسانی که می تونند کمکم کنند خواهشمندم تا یاری کنند چون چند وقت دیگه موقع ارایه پروژه ام هست و با این مشکل کل کارم زیر سوال می ره

sm
چهارشنبه 16 خرداد 1386, 01:46 صبح
شما هربار که میخواین گزارش رو نشون بدین، cr رو مقدار دهی مجدد کنین:


cr=new cr


موفق باشید

z_barnamenevis
پنج شنبه 17 خرداد 1386, 17:14 عصر
ممنون از راهنمایی تون
متاسفانه مشکل هنوز حل نشده من new cr هم کردم اما باز همان مشکل قبلی است
راستی یه سوال این کدها را باید تو رویداد form_load بنویسیم یا توی رویداد crviewer_load
منو کمک کنید

sm
شنبه 19 خرداد 1386, 21:28 عصر
روشی که من استفاده می کنم و تا حالا مشکلی هم نداشتم به این شکلیه:
1- ابتدای فرمم یه متغیر public از گزارشم new می کنم
2- یک تابع نوشتم که پارامترها رو set میکنه
3- report Source مربوط به Crystal Report Viewer رو هم اون متغیر قرار میدم

این یک نمونه کدی که الان داره کار میکنه :


Public Report As New Report6

Dim rdr As Odbc.OdbcDataReader
Dim zoom As Integer = 71
Dim Page As Integer
Dim GoToPage As Integer
Private CheckedDates As Boolean = False
Dim ds As New DataSet
Public Cn As New Global
Private city, sdate, Edate, id As String

Private Sub ClearFields()

Dim s As String
s = getdate().Trim.Substring(0, 4).Trim
End Sub

Private Sub SetParameters()
Cn.GetReports()
Report.SetParameterValue("Tarikh", DateNow.ToString.Trim)
Report.SetParameterValue("[St_Date]", Me.txtSal.Text.Trim)
Report.SetParameterValue("Desc", Desc.Trim)
End Sub

Private Sub frmR1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
'CenterForm(Me)

Report = New Report6
Me.cmdReport.Connection = Cn.Connection
Me.ProgressBar1.Visible = False
End Sub

Private Sub tlbrForm_ButtonClick(ByVal sender As Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles tlbrForm.ButtonClick
Select Case Me.tlbrForm.Buttons.IndexOf(e.Button)

Case 0 'خـــروج
Me.Close()
Case 2 'صفحه اول گزارش
Me.CR.ShowFirstPage()
Me.txtPage1.Text = Me.CR.GetCurrentPageNumber.ToString
Case 3 'صفحه قبلی گزارش
Me.CR.ShowPreviousPage()
Me.txtPage1.Text = Me.CR.GetCurrentPageNumber.ToString
Case 4 'صفحه بعدی گزارش
Me.CR.ShowNextPage()
Me.txtPage1.Text = Me.CR.GetCurrentPageNumber.ToString
Case 5 'صفحه آخر گزارش
Me.CR.ShowLastPage()
Me.txtPage1.Text = Me.CR.GetCurrentPageNumber.ToString
Case 7 'جستجوی متن در گزارش
Me.pnlSearch.Location = Me.pnlGoToPage.Location
Me.pnlSearch.Visible = True
Me.txtSearch.Select()
Me.txtSearch.Focus()
Case 8 'مشاهده گزارش
Me.ProgressBar1.Visible = True
Me.ProgressBar1.Value = 20
Me.Cursor = Cursors.WaitCursor
Me.txtPage1.Text = ""
Me.txtPage2.Text = ""
Me.ProgressBar1.Value = 25
Report = New Report6
Me.ProgressBar1.Value = 30
SetParameters()
Me.ProgressBar1.Value = 50
Try
Me.CR.ReportSource = Report
Catch ex As Exception
MsgBox(ex.ToString)
End Try

Me.ProgressBar1.Value = 75
Application.DoEvents()
If Report.IsLoaded = True Then
Me.CR.ShowLastPage()
Me.ProgressBar1.Value = 80
Page = Me.CR.GetCurrentPageNumber
Me.ProgressBar1.Value = 85
Me.CR.ShowFirstPage()
Me.ProgressBar1.Value = 90
End If
Me.CR.Zoom(71)
Me.ProgressBar1.Value = 95
Application.DoEvents()
Me.ProgressBar1.Value = 100
Me.ProgressBar1.Visible = False
Me.ProgressBar1.Value = 0
Me.Cursor = Cursors.Default
Case 9 'چاپ گزارش
Me.CR.PrintReport()

Case 10 'رفتن به صفحه
Me.pnlGoToPage.Visible = True
Me.txtGoToPage.Select()
Me.txtGoToPage.Focus()

Case 11 'ذخیره گزارش در فایل
Me.CR.ExportReport()
Case 13 'بزرگنمایی
zoom = zoom + 20
If zoom <= 400 Then
Me.tlbtnBozorg.Enabled = True
Me.tlbtnKochak.Enabled = True
Me.CR.Zoom(zoom)
Else
Me.tlbtnBozorg.Enabled = False
End If
Case 14 'کوچگنمایی
zoom = zoom - 20
If zoom >= 20 Then
Me.tlbtnKochak.Enabled = True
Me.tlbtnBozorg.Enabled = True
Me.CR.Zoom(zoom)
Else
Me.tlbtnKochak.Enabled = False
End If
Case 15 'عادی
zoom = 71
Me.CR.Zoom(71)
End Select
End Sub


ابته چون من از Toolbar خود کریستال استفاده نکردم خودم برای هر کلیدی که توی Toolbar ساخته شده خودم قرار دادم کد نوشتم.

موفق باشید

rezadavodi
سه شنبه 22 خرداد 1386, 08:59 صبح
وقتی که از این عبارت توی کد برنامه استفاده می کنم:
customerReport.SetParameterValue("Tarikh", "860321")
پیغام خطای زیر رو میده:
invalid index.(Exception from HRESULT الی آخر

ضمنا من از VS2005 و Crystal Report XI Developer Edition R2 استفاده می کنم

sm
سه شنبه 22 خرداد 1386, 10:45 صبح
کدهایی که براتون گذاشتم مال vs.net 2005 و کریستال 10 هست اما فکر نمی کنم بخاطر دات نت باشه... مگر اینکه مربوط به کریستال باشه که اونم بعید می دونم.
با اندیس کار کنید ببینید مشکل حل میشه؟ شاید با نام مشکل داره یا نام رو اشتباه وارد کردین.

موفق باشید

rezadavodi
سه شنبه 22 خرداد 1386, 13:35 عصر
با ایندکس هم همین جوابو میده.
داخل کریستال پارامتر از نوع استاتیک باید انتخاب بشه یا داینامیک؟ داخل کریستال من یه پارامتر از نوع داینامیک تعریف کردم و فیلدش رو هم روی فیلد تاریخ بانکم گذاشتم تا اینجاش درسته؟
مشگلمو کامل بخوام بگم اینه که چون رکوردهای بانک من بصورت روزانه آپدیت میشه یعنی مثلا هر روز یکسری رکورد.
حالا برای گزارش گیری می خوام بگم که رکوردهای فلان روز نمایش داده بشه. کل فروم گشتم از پستهای خودتون دیدم که گفتید بهترین راه برای اینکار اینه که یک مقدارو به کریستال پاس بدید و داخل کریستال رکوردها رو با اون پارامتر فیلتر کنید درسته؟

asemanina793
سه شنبه 22 خرداد 1386, 14:27 عصر
با سلام و عرض خسته نباشید
لطفا" مرا راهنمایی کنید
واقعا" گیج شدم
من در محیط دات نت با زبان سی شارپ پروژه ای نوشتم که در آن از کریستال ریپورت استفاده کردم و این برنامه درست کار می کند ولی در هنگام پابلیش کردن برروی سرور آیکونهای کریستال را نمایش نمی دهد لطفا مرا راهنمایی کنید که چه کنم

choobin84
سه شنبه 22 خرداد 1386, 17:35 عصر
load report failed

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

asemanina793
چهارشنبه 23 خرداد 1386, 09:21 صبح
با سلام وخسته نباشید
خواهشا" یکی به دادم برسه

z_barnamenevis
چهارشنبه 23 خرداد 1386, 09:44 صبح
مشکل من این بود که بعد از مقدار دهی به گزارشم(report source)
ارامترها را مقداردهی کرده بودم جای این دو دستور را که عوض کردم مشکل حل شد
بازم ممنون از راهنماییهاتون

sm
چهارشنبه 23 خرداد 1386, 10:22 صبح
'مشاهده گزارش
Me.ProgressBar1.Visible = True
Me.ProgressBar1.Value = 20
Me.Cursor = Cursors.WaitCursor
Me.txtPage1.Text = ""
Me.txtPage2.Text = ""
Me.ProgressBar1.Value = 25
Report = New Report6
Me.ProgressBar1.Value = 30
SetParameters()
Me.ProgressBar1.Value = 50
Try
Me.CR.ReportSource = Report
Catch ex As Exception
MsgBox(ex.ToString)
End Try



اگه دقت می کردین مشخص بود

موفق باشید