PDA

View Full Version : تغییر property نمودار رسم شده از طریق کد برنامه



mzamani
شنبه 25 آذر 1385, 15:22 عصر
سلام به همه دوستان
من یک نمودار در کریستال ریپورت رسم کرده ام. اکنون می خواهم propertyهای آن را درون برنامه تغییر دهم. اما نمی دانم چگونه و در کجا به این گراف دسترسی داشته باشم تا بتوانم مقادیر property های آن را تغییر دهم. در ضمن namespace مربوط به آن را هم نمی دانم.
لطفاً مرا راهنمایی کنید:خجالت:

reza_rad
یک شنبه 26 آذر 1385, 08:35 صبح
CrystalDecisions.CrystalReports.Engine.ChartObject

mzamani
یک شنبه 26 آذر 1385, 10:02 صبح
با سلام و تشکر از شما
من این namespace و نیز موارد زیر را اضافه کردم

Imports CrystalDecisions.CrystalReports.Engine.
Imports CrystalDecisions.Shared

و در فرم یک crystalreportviewer استفاده کردم و فایل گزارشم که شامل نمودار است با عنوان crystalreport1 به عنوان source آن قرار دادم ولی وقتی کد زیر را برای دسترسی به property های نمودار می نویسم این خطا را نشان می دهد:

Dim crpt As CrystalReport1

خطا: Type crystalreport1 is not define

حالا چه کار باید بکنم؟:متفکر:

reza_rad
یک شنبه 26 آذر 1385, 10:12 صبح
نباید چنین اروری وجود داشته باشه.
برید و از توی کلاس ویو روی namespace پروژه تون کلیک کنید و برید تا پایین تر .چک کنید اونجا کلاسی به نام crystalreport1 وجود داره یا نه؟

mzamani
یک شنبه 26 آذر 1385, 10:46 صبح
با سلام و تشکر
من کلاس ویو را چک کردم چنین کلاسی وجود نداره . نمی دانم کجای کارم اشکال داره
در ضمن از راهنمایی تون ممنون

reza_rad
یک شنبه 26 آذر 1385, 10:49 صبح
خواهش می کنم:)

احتمالا توی ایجاد ریپورت مشکلی پیش اومده.
crystalreport1 رو پاک کنید و یکبار دیگه از اول ایجاد کنید. پروژه رو هم build کنید ببینید مشکل حل میشه؟

mzamani
یک شنبه 26 آذر 1385, 11:20 صبح
با تشکر مجدد
من در یک برنامه دیگر هم امتحان کردم همین مشکل به وجود آمد
ببینید کاری که من می کنم دقیقا به صورت زیر است:
1- add new item -> crystal report -> standard
2- ایجاد connection و ادامه ویزارد Report Creation
3- insert chart
4- add new item -> web form
5- در این فرم یک crystal report viewer قرار داده و گزارش خود را به آن bind می کنم
هنگام اجرا دقیقا درست جواب می دهد ولی در behind code فرم، اصلاً crystalreport1 را نمی شناسد
در ضمن name space ها را اضافه کردم و reference زیر را هم add کردم:

crystaldecision.crystalreport.engin

اگر اشکالی وجود داره راهنمایی بفرمایید:خجالت:

reza_rad
یک شنبه 26 آذر 1385, 11:34 صبح
من تست کردم.
من هم دقیقا همین کار رو می کنم ولی کلاسش رو ایجاد می کنه!

روی crystalreport1.rpt توی پروژه کلیک کنید.
توی پنجره ی property ببینید خاصیت build action آیا Embedded Resource هست یا چیز دیگه؟

mzamani
یک شنبه 26 آذر 1385, 13:12 عصر
سلام
در قسمت crystalreport1 property در پروژه های من اصلا خاصیت build action وجود نداره
راستی برنامه من در دات نت فریمورک 2 با vb.net نوشته شده، آیا ممکنه با اینکه برنامه نتیجه گزارش و نمودار را درست نشون می ده ، در نصب جایی مشکل داشته باشه؟؟:گیج:

reza_rad
دوشنبه 27 آذر 1385, 07:37 صبح
در قسمت crystalreport1 property در پروژه های من اصلا خاصیت build action وجود نداره

عجب!
البته شاید از خصوصیات دات نت 2 اینه. من دات نت 2 دارم ولی چون کریستال همراهش نصب نیست نمی تونم اینو چک کنم.



راستی برنامه من در دات نت فریمورک 2 با vb.net نوشته شده، آیا ممکنه با اینکه برنامه نتیجه گزارش و نمودار را درست نشون می ده ، در نصب جایی مشکل داشته باشه؟؟

البته شما برای نصب باید همه merge module ها رو به ست آپ برنامه اضافه کنی. در مورد مراحل ساخت ست آپ و اضافه کردن مرج ماژولها توی همین تالار مطالب زیادی هست که با جستجو پیداشون می کنی.

reza_rad
دوشنبه 27 آذر 1385, 14:25 عصر
مشکل شما اینجا مطرح شده:
http://forums.asp.net/thread/1364045.aspx

راه حل:


I found the problem:

Using Crystal Reports for Visual Studio 2005, when you create a report it won't add a class which you could create a report instance with.
So you have to add:

Public Class myReport

Inherits ReportClass

Public Sub New()

MyBase.New()

End Sub


Public Overrides Property ResourceName() As [String]

Get

Return "myReport.rpt"

End Get

Set(ByVal value As [String])

'Do nothing

End Set

End Property
End

Class


In order to do:



Dim

myReportObject As New myReport


then you can do whatever you want with your instace, like setting parameters if you are using a stored procedure to populate your report



Dim

parm As New ParameterDiscreteValue()

Dim values As New ParameterValues()
parm.Value = strValue

values.Add(parm)

'This next line will set the value for your parameter avoiding the extremely anoying page that prompts for the parameters

myReportObject .DataDefinition.ParameterFields.Item(0).ApplyCurre ntValues(values)

'This lines will avoid the second most anoying page that prompts for user name and password if you are not using a trusted connection

myReportObject .SetDatabaseLogon(ConfigurationManager.AppSettings (

"user"), ConfigurationManager.AppSettings("Password"))
CrystlRprtVwr.ReportSource = myReportObject

mzamani
سه شنبه 28 آذر 1385, 07:59 صبح
با سلام و تشکر فراوان
من توانستم یک نمونه از گزارش در برنامه ایجاد کنم، ولی هر چه سعی کردم نتوانستم به نمودار در آن دسترسی پیدا کنم. یعنی نمی دانم چطور در کد برنامه یک نمودار ایجاد و property های آن را تغییر دهم.
لطفاً باز هم مرا راهنمایی بفرمایید.:لبخندساده:

reza_rad
سه شنبه 28 آذر 1385, 10:08 صبح
نمودار باید از داخل خود گزارش ایجاد شود.
شما فقط می تونید مقدار معدودی از خصوصیت هاش رو از توی کد تغییر بدین مثل width و ...
این هم کد نمونه:


Dim CRDemo As New CrystalReport1
Dim CRChart As CrystalDecisions.CrystalReports.Engine.ChartObject = CType(CRDemo.ReportDefinition.ReportObjects.Item("Graph1"), CrystalDecisions.CrystalReports.Engine.ChartObject )
CRChart.Width = 100
Me.CrystalReportViewer1.ReportSource = CRDemo
Me.CrystalReportViewer1.Refresh()

mzamani
سه شنبه 28 آذر 1385, 10:20 صبح
باز هم متشکرم
من باید حدود 30 تا نمودار داشته باشم. در واقع با انتخاب کاربر فیلدی که باید نمودار بر اساس اون رسم بشه تعیین می شه. از اونجایی که نمودارها فقط در فیلدی که در on change of در chart expertبا هم تفاوت دارند، می خواستم این خصوصیت را در کد و در زمان اجرا تغییر دهم.
اگر این کار ممکن نباشه من باید 30 تا نمودار را رسم کنم و بر اساس انتخاب کاربر یکی از اونها را visible نمایم.
اگر غیر از این است لطفاً راهنمایی بفرمایید.:لبخندساده:

reza_rad
سه شنبه 28 آذر 1385, 10:41 صبح
فکر نمی کنم بتونید این خصوصیت رو از کد عوض کنید.
شاید هم راهی باشه.و البته اگه کسی راهی سراغ داشته باشه حتما ارایه می کنه.

mzamani
سه شنبه 28 آذر 1385, 15:19 عصر
با سلام و تشکر
من برای هر نمودار یک فایل کریستال ریپورت ایجاد کردم. در فرم برنامه کاربر فیلد مورد نظر خود را انتخاب می کند و سپس گزارش مربوطه bind می شود. الان مشکلم اینست که:
اولاً: تعداد زیادی فایل کریستال ایجاد کرده ام.
دوماً: با انتخاب هر فیلد برای نمایش گزارش قسمت logonکریستال به صورت زیر فعال می شود:

The Report you requested require further information
Server Name:
DataBase
Username
Password

Logon

آیا ممکن است این قسمت را حذف کنیم یا اینکه لااقل یک بار نمایش داده شود ، نه برای هر گزارش؟

reza_rad
چهارشنبه 29 آذر 1385, 07:03 صبح
برای حل مشکل logon :
توی همین تالار logoninfo رو جستجو کنید.

mzamani
چهارشنبه 29 آذر 1385, 07:42 صبح
به خاطر راهنمایی هاتون متشکرم