PDA

View Full Version : سوال: مشکل در اجرای کریستال ریپورت



Mostafa_
جمعه 31 خرداد 1392, 12:46 عصر
باسلام
یه سوال فنی داشتم
میخوام با کریستال ریپورت یه گذارش تهیه کنم اما این خطا رو بهم میده
CrystalReportExeption و متن خطاش هم اینهLoad report failed.
باید چکار کنم ؟؟
ممنون میشم راهنمایی کنین

jeson_park
جمعه 31 خرداد 1392, 12:50 عصر
سندی رو که با کریستال ریپورت باز کردین به صورت دستی و با کد ببندین
مثلاً

CrystalReportViewer1.ReportSource.Close();

Mostafa_
جمعه 31 خرداد 1392, 12:56 عصر
متد Close نداره این کلاس !!

jeson_park
جمعه 31 خرداد 1392, 12:58 عصر
ورژن دات نت شما چنده برادر؟؟؟
یه بخشی از کد رو اینجا بزارید تا ببنم شما چه طوری گزارش تهیه می کنی؟؟(اگه شد تو واحد خبر صدا و سیما استخدامت می کنم :لبخند:)

Mostafa_
جمعه 31 خرداد 1392, 13:01 عصر
Visual stadio 2010 + Crystal report 13
:D
ReportDocument RD = new ReportDocument();
RD.FileName = Application.StartupPath + "CrystalReport1.rpt";
CLsManageUser ClsMU = new CLsManageUser();
RD.SetDataSource(ClsMU.Select());
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();
توضیح : ClsManageUser یه کلاسه که مند Select داره

jeson_park
جمعه 31 خرداد 1392, 13:11 عصر
این ورژن Visual studio هست
شما می تونید توی VS2010 از نگارش های قبلی دات نت(3.5 ، 3 ، و ...) هم در پروژتون استفاده کنید
شما ببین ورژن .NET که برای "این پروژه " استفاده می کنی چیه ؟؟
Project Properties -> Application Tab
در قسمت Target Framework نوشته( و می تونی همینجا هم کم و زیادش کنی!)
اگه ورژن 4 هست بزارش روی 3.5
بعدشم پسر خوبی باش و یه تیکه از اون کدی که توی برنامه استفاده کردی رو اینجا بزار ببنیم دقیقاً چی نوشتی

Mostafa_
جمعه 31 خرداد 1392, 13:20 عصر
خیلی باهالی
شرمنده ، دات نت 4 رو دارم استفاده میکنم
ReportDocument RD = new ReportDocument();
RD.FileName = Application.StartupPath + "CrystalReport1.rpt";
CLsManageUser ClsMU = new CLsManageUser();
RD.SetDataSource(ClsMU.Select());
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();
این کد خدمت شما ،
راستی ClsManageUser یه کلاسه که توش یه متد به نام Select هست و قراره Crystal Report از این متد تغذیه کنه

jeson_park
جمعه 31 خرداد 1392, 13:25 عصر
توی رویداد Unload فرم مقدار crystalReportViewer1.ReportSource رو برابر با Null قرار بده
راستی یه سوال توی ClsManageUser چه موقع SqlConnection رو Close می کنی؟؟ SqlCommand رو چی ؟؟ Dispose می کنی؟؟

Mostafa_
جمعه 31 خرداد 1392, 13:52 عصر
پروژه به صورت چندلایه نوشته شده
ClsmanageUser فقط دستورات insert , Update , Delete , Select توشه
متد Open و Close تو یه کلاس دیگه انجام میشه
اما SqlCommand رو Dispose نمیکنم
باید حتما بشه ؟؟؟
چظوری ؟؟؟

jeson_park
جمعه 31 خرداد 1392, 14:26 عصر
خب مشکل فکر کنم همینجاست
توی همون ClsmanageUser یه متد برای close کردن کانکشن بنویسید
خب SqlCommand هم اینطوری Dispose می شه دیگه:لبخند:

SqlCommand.Dispose () ;

یه 2 تا متد اینطوری بنویس دیگه


public void Connect()
{
try
{
connection.Open();
}
catch (Exception exp)
{
throw exp;
}
}

public void Disconnect()
{
try
{
connection.Close();
}
catch (Exception exp)
{
throw exp;
}
}

Mostafa_
جمعه 31 خرداد 1392, 14:32 عصر
ببین یه کلاس دیگه دارم به نام Database اون تو این دستورا هست
اما 2تا سوال
throw exp دستورکه توی Try و catch نوشته شده چکار میکنه ؟؟
متد Dispose رو کجا باید نوشت ؟؟

Mostafa_
جمعه 31 خرداد 1392, 16:56 عصر
کسی نمیتونه راهنماییم کنه ؟؟
کارم گیره !!!

jeson_park
جمعه 31 خرداد 1392, 17:47 عصر
ببخشید یه 2 ساعت رفتم استرات کنم مغزم سرد شه :لبخندساده:
throw exp خب مشخصه دیگه یه اکسپشن ایجاد می کنه!
در واقع استفاده از throw در خود بلاک catch برای فراخوانی مجدد اون استثنا هست
متد Dispose رو هم هر جا که دیگه نمی خوای از sqlcommand استفاده کنی بنویس توی همون متد disconnect مثلاً:چشمک:

Mostafa_
جمعه 31 خرداد 1392, 18:17 عصر
پس من باید یه 2 روزی برم استراحت کنم تا مغزم سرد شه
نا فرم فسفر سوزوندم این 2 روز
اقا این حرکت رو هم زدم اما بازم خطا میده
اشکال نداره پروژه رو برات بفرستم یه نگا بهش بندازی ؟؟؟
اگه اشکال نداره ایمیلت رو بده :لبخندساده:

khokhan
جمعه 31 خرداد 1392, 18:21 عصر
پس من باید یه 2 روزی برم استراحت کنم تا مغزم سرد شه
نا فرم فسفر سوزوندم این 2 روز
اقا این حرکت رو هم زدم اما بازم خطا میده
اشکال نداره پروژه رو برات بفرستم یه نگا بهش بندازی ؟؟؟
اگه اشکال نداره ایمیلت رو بده :لبخندساده:

آقا بدتون نیاد اما راهی رو که رفتین اشتباهه با ساده ترین راه در عرض نیم ساعت می تونستین گزارشتون رو بسازین :لبخند:

Mostafa_
جمعه 31 خرداد 1392, 18:23 عصر
جدا ؟؟؟
خوب چیه ؟؟
چرا بدم بیاد داداش
بگو پدرم درومد !!!!

khokhan
جمعه 31 خرداد 1392, 18:25 عصر
جدا ؟؟؟
خوب چیه ؟؟
چرا بدم بیاد داداش
بگو پدرم درومد !!!!
یه نمونه از بانک و کلاستون رو بگذارین تا بگم :لبخند:

Mostafa_
جمعه 31 خرداد 1392, 18:36 عصر
این کدی که تو فرم گذارش نوشتم

ReportDocument RD = new ReportDocument();
RD.FileName = Application.StartupPath + "CrystalReport1.rpt";
CLsManageUser ClsMU = new CLsManageUser();
RD.SetDataSource(ClsMU.Select());
crystalReportViewer1.ReportSource = RD;
crystalReportViewer1.Show();


این کدی که تو کلاس نوشتم و کار انتخاب از بانک رو انجام میده

public DataTable Select()
{
string Sql = "Select * from Users";
DataTable DT = new DataTable();
Database.Connect();
DT = Database.Select(Sql);
Database.disconnect();
return DT;
}


و این هم دستورات اتصال به بانکه که تو یه کلاس دیگه با نام Database نوشته شده

public string database = "SabteAhval";
public bool IsExpress = true;
SqlConnection Connection;
SqlCommand Command;
SqlDataAdapter Sda;

public string Date = DateTime.Now.ToShortDateString();
public string Time = DateTime.Now.ToShortTimeString();

public ClsDatabase()
{
Connection = new SqlConnection();
Command = new SqlCommand();
Sda = new SqlDataAdapter();
Command.Connection = Connection;
Sda.SelectCommand = Command;
}

public void Connect()
{
string Connect = "";
if (IsExpress)
{
Connect = "Server = localhost ; database = " + database + " ; integrated security = true";
}
else
{
Connect = "";
}
Connection.ConnectionString = Connect;
Connection.Open();
}

public void disconnect()
{
Connection.Close();
Command.Dispose();
}
public DataTable Select(string Sql)
{
Command.CommandText = Sql;
DataTable DT = new DataTable();
Sda.Fill(DT);
return DT;
}
public void DoCommand(string Sql)
{
Command.CommandText = Sql;
Command.ExecuteNonQuery();
}

marshalsharifi
جمعه 31 خرداد 1392, 18:57 عصر
کاری که میکنی در اصل بهترین راه نیست. برام ایمیل بزن تا درستش کنم برات.
marshalsharifi@yahoo.com