اشکال در کار با crystalreport

perfume117

New Member
سلام من یه مشکلی دارم. (برنامه تحت وب با asp.net و زبان c# پایگاه داده sql)
من یک فرم در برنامه ام ساختم به نام showrpt و در آن یک crystalreportviewer قرار دارم و آنرا public کردم. و با استفاده از addnewitem به پروژه ام یک crystal report اضافه کردم و نامش را logrpt گذاشتم و آنرا به db متصل کردم و اطلاعات در آن به صورت ساده نمایش داده می شوند. حال در فرم دیگری کد زیر را برای نمایش قرار دادم اما error می دهد.
کد:
ReportDocument rd;
showrpt rpt1 = new showrpt();
rd = new logrpt();
rpt1.CrystalReportViewer1.ReportSource = rd;
rd.SetDataSource(mtable);
rpt1.CrystalReportViewer1.ShowFirstPage(); 
[CODE/]
(دقیقاً خط rpt1.CrystalReportViewer1.ReportSource = rd; را خطا می گیرد. لطفاً کمک کنید.)
متن error:
System.NullReferenceException: Object reference not set to an instance of an object. at percase03.logfrm.showcustom(Int32 i) in c:\inetpub\wwwroot\percase03\logfrm.aspx.cs:line 325
 
سلام دوست عزیز : ( اینا رو تست کن ایشالا که درست میشه )
1) رجیستری رو چک کن ( مسیر زیر )
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W3SVC\Parameters\Virtual Roots/CrystalReportWebFormViewer
اگر این کلید وجود نداشت اونو ایجادش کن.
مقدارشو مثلا این بزار :
C:\Program Files\Microsoft Visual Studio .NET\Crystal Reports\Viewers\,,20

البته باید مسیر درستشو بدی ( رو سیستمت )

2) اگه از virtual directory برای وب فرم هاتون دارین استفاده میکنید و در مسیری به جز مسیر خود پوشه پروژتون هست اون رو به داخل پروژه کپی کنید.
این ویرپوال دایرکتوری که میگم اگه از دات نت 2002 استفاده میکنید اینه :
CrystalReportWebFormViewer
این ویرپوال دایرکتوری که میگم اگه از دات نت 2003 استفاده میکنید اینه :
CrystalReportWebFormViewer2

اگه میبینی اصلا وجود نداره - باید ایجادش کنی که راه حل خودشو داره ( اگه نشد کارت بگو تا بنویسم )
اگه مشکل نا اینجا حل نشده برین به مسیر زیر :
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Service
s\W3SVC\Parameters\Virtual Roots

مقدارشو بزار : ( برا نسخه 2003 )
/CrystalReportWebFormViewer2

یه مسئله هم اینه که :
شما ممکنه برا استفاده از کریستال ریپورت dll اون برا یه فایل مشخص ساختید.
فقط برا همون فایل کار میکنه. که برا حلش باید کلاسی که نوشتی رو توی فلدر app_code تو ورژن 2005 قرارش بدی! ( تا همه صفحات اون رو SHARE شده ببینند و استفاده کنند )
 

perfume117

New Member
دوست گرامی
با برنامه های تحت ویندوز هیچ مشکلی ندارم. خیلی راحت می تونم از crystal report استفاده کنم اما برای وب مشکل پیدا کردم.
این که گفتید وجود داشت
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Servic es\W3SVC\Parameters\Virtual Roots/CrystalReportWebFormViewer
مقدارش این بود:
C:\Program Files\Microsoft Visual Studio .NET 2003\Crystal Reports\Viewers\,,201
مسیرش درسته
گه از virtual directory برای وب فرم هاتون دارین استفاده میکنید و در مسیری به جز مسیر خود پوشه پروژتون هست اون رو به داخل پروژه کپی کنید.
من پروژه ام در C:\Inetpub\wwwroot\per است. و از NET2003. استفاده می کنم. اما اینو CrystalReportWebFormViewer2 نمی بینم.
یه چی دیگه
وقتی CrystalReportViewer1 را روی صفحه میزارم مثل apllication صفحه ی پرینتی را نمی بینم فقط یه مربع روی صفحه میاد که روش نوشته
CrystalReportViewer-CrystalReportViewer1
Use ReportSource or databindings property to specify a report
چه کنم؟:sad:
 
مشکل از Bind شدن دیتاها هست!
این کار رو تست کنید ( این جواب میده ! )
1) یه پروژه خالی ( جدید ) ایجاد کنید.
2) یه Dataset بزارین.
3)عناصری که مثلا بخوایم ازشون گزارش بگیریم رو تو Dataset وارد میکنیم.
4) Save All بزنید.
5) توی solution explorer راست کلیک کنید روی فایل مربوط به Dataset و دستور Build and browse رابزنید.
6) یه عنصر Crystal report به صفحه اضافه کنید.
7)server explorer برید و روی فیلد دیتابیس راست کلیک کنید و database expert رابزنید و از توی جدولی که میاد Dataset خودتون را انتخاب کنید و OK کنید.
8)server explorer برید و فیلد دیتابیس رو انتخاب کنید و بکشید روی صفحه.
9) از TOOLBOX اینو انتخاب کنید : crystal report viewer و بکشید روی صفحه ( اگه اینجا عکسشو نشون نمیده مشکل اینه که فایل dll شو نتونسته پیدا کنه! )
10) مثلا تو PageLoad تون میتونه همچین چیزی باشه :

کد:
private void Page_Load(object sender, System.EventArgs e)
{
CrystalReport1 report=new CrystalReport1();
CrystalReportViewer1.Visible=true;
DataSet ds=new DataSet("Account");//give same name as on 
//dataset1 table header
DataTable table=new DataTable("Account");//give same name as on 
//dataset1 table header 
table.Columns.Add("Fname",typeof(System.String));
table.Columns.Add("Lname",typeof(System.String));
table.Columns.Add("Salary",typeof(System.String)); 
DataRow row=table.NewRow();
row["Fname"]="Mathew";
row["Lname"]="Hayden";
row["Salary"]="5000$";
// add to table
table.Rows.Add(row);
ds.Tables.Add(table);
// set report's dataset
report.SetDataSource(ds);
// set report source
CrystalReportViewer1.ReportSource =report;
}
 

perfume117

New Member
دوباره سلام ببخشید
) از TOOLBOX اینو انتخاب کنید : crystal report viewer و بکشید روی صفحه ( اگه اینجا عکسشو نشون نمیده مشکل اینه که فایل dll شو نتونسته پیدا کنه! )
عکسشو نشون نمی ده. باید چه کنم؟
کدی که گفتید اجرا کردم خطای زیر را داد
کد:
Server Error in '/test' Application.
--------------------------------------------------------------------------------

Query Engine Error: 'C:\DOCUME~1\M\ASPNET\LOCALS~1\Temp\temp_dcc48e94-9656-48de-b424-fc77b75a970d.rpt' 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: CrystalDecisions.CrystalReports.Engine.DataSourceException: Query Engine Error: 'C:\DOCUME~1\M\ASPNET\LOCALS~1\Temp\temp_dcc48e94-9656-48de-b424-fc77b75a970d.rpt'

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 


[DataSourceException: Query Engine Error: 'C:\DOCUME~1\M\ASPNET\LOCALS~1\Temp\temp_dcc48e94-9656-48de-b424-fc77b75a970d.rpt']
   .F(String 	, EngineExceptionErrorID 
) +540
   .A(Int16 , Int32 ) +537
   CrystalDecisions.CrystalReports.Engine.FormatEngine.GetPage(PageRequestContext reqContext) +538
   CrystalDecisions.ReportSource.LocalReportSourceBase.GetPage(PageRequestContext pageReqContext) +189
   CrystalDecisions.Web.ReportAgent.u(Boolean N) +164
   CrystalDecisions.Web.CrystalReportViewer.OnPreRender(EventArgs e) +108
   System.Web.UI.Control.PreRenderRecursiveInternal() +62
   System.Web.UI.Control.PreRenderRecursiveInternal() +125
   System.Web.UI.Control.PreRenderRecursiveInternal() +125
   System.Web.UI.Page.ProcessRequestMain() +1489

 


--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:1.1.4322.573; ASP.NET Version:1.1.4322.573
 
چیزایی که به دهنم میاد :
من احتمال میدم که اگر به جا استفاده از DATASET از DATA TABLE استفاده کنی مشکل حل میشه!!!
یعنی مثلا :
rpt1.SetDataSource(Ds.Tables(0))
رو استفاده کنید برای انتساب SetDataSource
 

جدیدترین ارسال ها

بالا