PDA

View Full Version : صفحه گزارش پویا با کریستال رپورت



rezaei manesh
دوشنبه 19 بهمن 1383, 12:29 عصر
سلام دوستان
من میخواهم از داخل برنامه صفحه گزارش رو تنظیم کنم با دات نت و کریستال ریپورت.
یعنی فیلد آبجیکت و... رو اضافه یا حذف کنم.
یا فیلد آبجکت رو در سورس برنامه پر کنم.
اگه کسی اطلاعاتی در این زمینه داره لطفاً به من کمک کنه.خیلی عجله دارم.
یعنی میخوام صفحه گزارشم پویا باشه.
:گیج: ::نوشتن::

bahar60
دوشنبه 19 بهمن 1383, 14:09 عصر
بهتر بود این سوال را در وی بی می پرسیدین :)
ولی برای این کار بهتره شما از ویبی اطلاعات مورد نظر را در یک تیبل ذخیره کنید
بعد اون تیبل را در کریستال ریپورت به یه ریپورت وصل کنید و ظاهر گزارش را درست کنید
بعد در وی بی آبجکت را اظافه کنید و مسیر فایلتون را مسیر ی که ریپورت در اون قرار داره بدید (مسیر فایل را در خاصیت نام گزارش ،یعنی یکی از خاصیت های آبجکتتون قرار داره)
بعد در برنامه مثلا در رویداد کلیک بر روی یک کامند اون آبجکت را active کنید بعد هم رفرش کنید
فقط رفرش یادتون نره :sunglass:
همین

محمد رضاپور
دوشنبه 19 بهمن 1383, 20:27 عصر
با سلام

جناب آقای رضائی منش، اجازه بدید روشی رو که من ازش استفاده کردم و تقریبا 99% از خواسته های من و کارفرمای من رو جواب داده خدمت شما و سایر دوستانی که تمایل به استفاده از این روش دارن رو عرض کنم.
اولا من از VB6 و CR10 Advanced Developer Edition استفاده می کنم و نمی دونم که این قابلیت آیا در dot Net هم هست یا نه؟
درثانی من یه ریپورت جدید طراحی کردم و فقط query خودم رو بهش معرفی کردم و هیچ Object دیگه ای به اون اضافه نکردم. در کدهای فرمی که گزارش رو به کاربر نشون می دم (منظورم همون فرمی هست که ocx کریستال ریپورت توی اون قرار داره) کدهای زیر رو می نویسم:

Dim rsReport As New ADODB.Recordset
Dim Report As New CrystalReport

Private Sub Form_Load()
rsReport.Open "Select * From query"
Report. Database.SetDataSource rsReport
Report. DiscardSavedData

Report.DetailSection1.AddFieldObject [field],[left],[top]

Report.ReadRecords
CRViewer.ReportSource = Report
Screen.MousePointer = vbHourglass
CRViewer.ViewReport
Screen.MousePointer = vbDefault
End Sub

در این حالت شما باید بجای عبارت [field] نام فیلدی رو که کاربر انتخاب کرده رو قید کنید و باید از رسم الخط "{query.fieldname}" استفاده کنید.

نکته دیگه اینه که من یه table تعریف کردم که توی اون در هر رکوردی اسم فیلد query رو نوشتم و یه فیلد هم از نوع Boolean تعریف کردم که وقتی کاربر فیلدی از query رو انتخاب می کنه، من مقدار اون رو True می کنم و در قسمت اضافه کردن Objectها به ریپورتم تمامی فیلدهائی رو که کاربر انتخاب کرده با استفاده از این روش بهش نشون می دم.

شاید یه کم براتون این روش گیج کننده باشه، ولی اگر ساختار طراحی Tableها و queryهای شما منطقی باشن اون وقت متوجه می شید که خیلی راحت با این روش می تونید از گزارش پویا استفاده کنید. این نکته رو هم یادآوری کنم که من حتی سایز کاغذ رو هم متغیر تعریف کردم. یعنی بصورت پیش فرض کاغذ من A4 عمودی هست و با افزایش طول گزارش اون رو بصورت افقی در میارم و اگر باز هم طول گزارش بیشتر شد از کاغذ A3 استفاده می کنم.

در پایان باید اضافه کنم که برای استفاده از این روش می تونید از سمپل خود کریستال ریپورت به آدرس Program Files\Crystal Decision\Crystal Reports 10\Samples\En\Code\RDC\Visual Basic\Pro Athlete Salaries هم استفاده کنید. من بعضی از کارهام رو از اینجا ایده گرفتم.

امیدوارم که این مختصر توضیح جرقه ای برای ذهن دوستان جوان و فعال باشه تا با پشتکار بیشتر (و البته یه کمی هم صبر و حوصله) به آرزوهاشون برسن.

موفق باشید.

rezaei manesh
سه شنبه 20 بهمن 1383, 10:20 صبح
سلام دوستان
ازتوجه شما بسیار ممنونم
روش baha60 به کار من نمیاد .(با تشکر از ایشان)
اما روش آقای رضاپور اگه جواب بده همونی که من می خوام.باید روش کار کنم .
از شما آقای رضاپور خیلی ممنونم.
به امید موفقیت همه دوستان.
:flower: ::نوشتن::

rezaei manesh
سه شنبه 20 بهمن 1383, 11:13 صبح
:(
سلام اما این روش هم جواب نمیده.

کمک کمک کمک
:(

**حامد**

rezaei manesh
سه شنبه 04 اسفند 1383, 17:57 عصر
یکی نیست جواب بده
:(

In_Chan_Nafar
جمعه 19 فروردین 1384, 00:43 صبح
شما تو حالت Runtime می خواهی حالت Design داشته باشی
اگه اینجوری هست می تونی Crystal Reports 10 Developer Edition تهیه کنی و استفاده کنی

راستی شما می توانید این رو هم فارسی کنید (فقط کافی هست این نسخه رو پیدا کنی)

mehdik76
شنبه 20 فروردین 1384, 17:34 عصر
سلام عرض شد.
منم اتفاقا به همین مشکل برخورد کردم و شدیدا هم نیاز به راهنمایی شما عزیزان دارم.
من Crystal report 10 advanced developer edition رو روی Visual studio .net نصب کردم ولی تابع ()AddFieldObject رو ندیدم. به نظر شما من چیکار کنم.

In_Chan_Nafar
دوشنبه 22 فروردین 1384, 10:06 صبح
مهدی جان سلام
من از نسخه 8.5 (Developer Edition) استفده می کنم
یه PM واستون می زنم

azimtak110
سه شنبه 11 دی 1386, 20:51 عصر
سلام ببینم عزیزم ایمیل داری برایت پیغام بگذارم زمانی که دسترسی بهت ندارم الان یک سعال دارم می توانم بپرسم

beautysunshine
پنج شنبه 25 بهمن 1386, 14:19 عصر
دوست عزیز با نوشتن این کد می توانید به هدفتان برسید البته در vb6

Private Sub Text4_Change()
On Error Resume Next
If Text4.Text = "" Then
Adodc1.Refresh
Else
Adodc1.Recordset.Filter = "code =' " + Text4.Text + " ' "
Adodc1.Recordset.Filter = " code like '" & Text4.Text & "*'"
End If
Text5.Text = Text4.Text
End Sub

مسعود منصوری
شنبه 18 اسفند 1386, 16:09 عصر
با سلام
آقا این مشکله من هم هست .
من میخوام گزارش پویا درست کنم که شبیه table تو word یا همون شکل grid باشه .
که هر ستون نشون دهنده ی یه فیلد باشه و بشه هر سطر و ستونو جداگانه رنگ آمیری و تنظیم کرد .
لطفاً اگه اطلاعاتی در این رابطه دارید بگید .....

saeedjalilvand
شنبه 14 اردیبهشت 1387, 14:09 عصر
حامد جان به حميد در كرمانشاه زنگ بزن تا جوابت را بده

final fantasy
شنبه 07 دی 1387, 00:06 صبح
با سلام منم همین مشکل رو دارم
منم برای ساخت یک برنامه فاکتور سازی به این امکانات نیاز دارم