PDA

View Full Version : Refresh کردن گزارش



Amir Taghavi
جمعه 22 اردیبهشت 1385, 19:55 عصر
سلام

اگر در گزارش از پارامتر فیلد استفاده کنیم هنگام Refresh کردن Report دوباره باید پارامترها رو مقدار دهی کنیم. چطور میشه جلوی اینکار رو گرفت. یعنی گزارش Refresh بشه ولی دیگه لازم نباشه که پارامترها رو مقداردهی کنم.

با تشکر از دوستان

Mehrafrooz
جمعه 22 اردیبهشت 1385, 20:35 عصر
من برای این کار از طریق کد نویسی گزارش رو refresh می کنم و دکمه refresh در toolbar رو حذف کردم .چون اونطوری وقتی گزارش refresh میشه پنجره پارامترها رو هم نشون میده .
البته از refresh استفاده کردم نه از refreshreport .
خوب اینطوری می تونی قبل از refresh شدن پارامتر ها رو بفرستی بعد refresh کنی.

Amir Taghavi
جمعه 22 اردیبهشت 1385, 22:05 عصر
من برای این کار از طریق کد نویسی گزارش رو refresh می کنم و دکمه refresh در toolbar رو حذف کردم .چون اونطوری وقتی گزارش refresh میشه پنجره پارامترها رو هم نشون میده .
البته از refresh استفاده کردم نه از refreshreport .
خوب اینطوری می تونی قبل از refresh شدن پارامتر ها رو بفرستی بعد refresh کنی.


سلام

از پاسخت ممنونم ولی...

1)Refresh تمام کنترل رو Refresh می کنه و ربطی به Report نداره و هیچ تغییری ( مثل تغییر Margin ) رو اعمال نمی کنه (نشون نمیده).

2)حتی اگر قبل از RefreshReport پارامترها رو مقدار دهی کنم وقتی که میخواد RefreshReport رو اجرا کنه بازم پارامترها رو می خواد.

Amir Taghavi
شنبه 23 اردیبهشت 1385, 14:10 عصر
کسی راهنمایی نمی کنه آیا؟!

leilav_1984
پنج شنبه 21 دی 1385, 08:28 صبح
من هم با همین مشکل پنجره پارامترها روبرو شدم
اگه راهشو پیدا کردین لطفا اینجا بذارین

meh_secure
دوشنبه 25 دی 1385, 00:03 صبح
مقادیر اولیه پارامتر فیلد ها را چگونه مقدار دهی می کنید؟ از طریق کد و یا اینکه کاربر وارد می کند؟؟

leilav_1984
پنج شنبه 28 دی 1385, 08:52 صبح
مقادیر اولیه پارامتر فیلد ها را چگونه مقدار دهی می کنید؟ از طریق کد و یا اینکه کاربر وارد می کند؟؟

کاربر وارد می کنه و از طریق SetParametersValue به گزارش ارسال می شه

meh_secure
شنبه 30 دی 1385, 23:29 عصر
کاربر وارد می کنه و از طریق SetParametersValue به گزارش ارسال می شه
نه! منظورم این بود که کاربر پارامتر ها رو در پنجره ای که خود کریستال تولید می کنه وارد می کنه یا که نه؟ (در اولین اجرای گزارش)

leilav_1984
یک شنبه 01 بهمن 1385, 12:04 عصر
نه! منظورم این بود که کاربر پارامتر ها رو در پنجره ای که خود کریستال تولید می کنه وارد می کنه یا که نه؟ (در اولین اجرای گزارش)

نه دیگه بار اول رو از برنامه میگیره

meh_secure
دوشنبه 02 بهمن 1385, 00:19 صبح
خب بعد از refresh کردن دوباره پارامتر ها رو از طریق کد به گزارش ارسال کنید.

leilav_1984
دوشنبه 02 بهمن 1385, 11:01 صبح
خب بعد از refresh کردن دوباره پارامتر ها رو از طریق کد به گزارش ارسال کنید.

نمی دونم با زدن اون دکمه چه رویدادی صدا میشه :متفکر: که اونجا دوباره پارامتر ها رو از طریق کد به گزارش ارسال کنم.

Amir Taghavi
سه شنبه 03 بهمن 1385, 07:39 صبح
سلام

بجای اینکه در rpt از ParameterField استفاده کنید تمام Parameter های مورد نیازتون رو در SP تعریف کنید. اینطوری موقع Refresh دیگه مشکلی پیش نمیاد.
برای مثال شما لازم دارید که اطلاعات جدول T رو با تاریخ فیلتر کنید و همچنین لازمه که تاریخ(شمسی)Print گزارش هم داشته باشید. پس قاعداتا" شما برای اینکار نیاز به 3 تا ParameterField دارید. اما طبق راه حل بالا شما باید ParameterField ها تون رو در یک SP تعریف کنید:


CREATE PROCEDURE MySP (@FirstDate NVARCHAR (10), @LastDate NVARCHAR (10), @PrintDate NVARCHAR (10))
AS

SELECT Name AS 'Name',
Family AS 'Family',
AVG AS 'AVG',
@PrintDate AS 'PrintDate'
FROM T
WHERE (Data BETWEEN @FirstDate AND @LastDate)

leilav_1984
سه شنبه 03 بهمن 1385, 09:52 صبح
بجای اینکه در rpt از ParameterField استفاده کنید تمام Parameter های مورد نیازتون رو در SP تعریف کنید.

اینطوری حجم SP زیاد نمیشه و باعث کندی Fetch کردن data نمیشه؟

reza_rad
سه شنبه 03 بهمن 1385, 10:07 صبح
اینطوری حجم SP زیاد نمیشه و باعث کندی Fetch کردن data نمیشه؟

SP حتی اگه حجم بالا هم داشته باشه چون یکبار compile میشه سرعتش زیاده

Amir Taghavi
سه شنبه 03 بهمن 1385, 10:12 صبح
SP حتی اگه حجم بالا هم داشته باشه چون یکبار compile میشه سرعتش زیاده

کاملا" درسته. حتی خیلی از Developer ها معتقدند که برای کارهای متداول (Insert, Update, Deleteو ...) بهتره که از SP استفاده بشه

meh_secure
جمعه 06 بهمن 1385, 00:06 صبح
نمی دونم با زدن اون دکمه چه رویدادی صدا میشه :متفکر: که اونجا دوباره پارامتر ها رو از طریق کد به گزارش ارسال کنم.
کلید refresh crystal را بردارید و یک کلید خودتون اضافه کنید

shahram197070
چهارشنبه 06 تیر 1386, 13:03 عصر
با سلام به همه
یک راه حل که مشکل منو حل کرد دوستان می تونند امتحان کنند یا مفید واقع شد :

در form_load گزارش پارامتر مورد نظر رو به گزارش بفرستید و کلید refreshreport رو غیر فعال کنید حالا در crystalreport1_resize از متد زیر استفاده کنید :

Private Sub CrystalReportViewer1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles CrystalReportViewer1.Resize
Me.CrystalReportViewer1.ShowFirstPage()
End Sub

غلامرضا شریفی
چهارشنبه 17 مرداد 1386, 18:30 عصر
این روش رو امتحان کنید 100% درست عمل میکند
MsgBox("چاپگر فعال گردد ", vbOKOnly + vbExclamation, " خطـــا ")
Me.CrystalReportViewer1.ReportSource = "E:\GRS\MASRAF\personal\p_personal.rpt"