باسلام
یه سوال فنی داشتم
میخوام با کریستال ریپورت یه گذارش تهیه کنم اما این خطا رو بهم میده
CrystalReportExeption و متن خطاش هم اینهLoad report failed.
باید چکار کنم ؟؟
ممنون میشم راهنمایی کنین
باسلام
یه سوال فنی داشتم
میخوام با کریستال ریپورت یه گذارش تهیه کنم اما این خطا رو بهم میده
CrystalReportExeption و متن خطاش هم اینهLoad report failed.
باید چکار کنم ؟؟
ممنون میشم راهنمایی کنین
سندی رو که با کریستال ریپورت باز کردین به صورت دستی و با کد ببندین
مثلاً
CrystalReportViewer1.ReportSource.Close();
متد Close نداره این کلاس !!
ورژن دات نت شما چنده برادر؟؟؟
یه بخشی از کد رو اینجا بزارید تا ببنم شما چه طوری گزارش تهیه می کنی؟؟(اگه شد تو واحد خبر صدا و سیما استخدامت می کنم )
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 داره
آخرین ویرایش به وسیله Mostafa_ : جمعه 31 خرداد 1392 در 13:16 عصر
این ورژن Visual studio هست
شما می تونید توی VS2010 از نگارش های قبلی دات نت(3.5 ، 3 ، و ...) هم در پروژتون استفاده کنید
شما ببین ورژن .NET که برای "این پروژه " استفاده می کنی چیه ؟؟
Project Properties -> Application Tab
در قسمت Target Framework نوشته( و می تونی همینجا هم کم و زیادش کنی!)
اگه ورژن 4 هست بزارش روی 3.5
بعدشم پسر خوبی باش و یه تیکه از اون کدی که توی برنامه استفاده کردی رو اینجا بزار ببنیم دقیقاً چی نوشتی
خیلی باهالی
شرمنده ، دات نت 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 از این متد تغذیه کنه
توی رویداد Unload فرم مقدار crystalReportViewer1.ReportSource رو برابر با Null قرار بده
راستی یه سوال توی ClsManageUser چه موقع SqlConnection رو Close می کنی؟؟ SqlCommand رو چی ؟؟ Dispose می کنی؟؟
پروژه به صورت چندلایه نوشته شده
ClsmanageUser فقط دستورات insert , Update , Delete , Select توشه
متد Open و Close تو یه کلاس دیگه انجام میشه
اما SqlCommand رو Dispose نمیکنم
باید حتما بشه ؟؟؟
چظوری ؟؟؟
خب مشکل فکر کنم همینجاست
توی همون 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;
}
}
ببین یه کلاس دیگه دارم به نام Database اون تو این دستورا هست
اما 2تا سوال
throw exp دستورکه توی Try و catch نوشته شده چکار میکنه ؟؟
متد Dispose رو کجا باید نوشت ؟؟
کسی نمیتونه راهنماییم کنه ؟؟
کارم گیره !!!
ببخشید یه 2 ساعت رفتم استرات کنم مغزم سرد شه
throw exp خب مشخصه دیگه یه اکسپشن ایجاد می کنه!
در واقع استفاده از throw در خود بلاک catch برای فراخوانی مجدد اون استثنا هست
متد Dispose رو هم هر جا که دیگه نمی خوای از sqlcommand استفاده کنی بنویس توی همون متد disconnect مثلاً
پس من باید یه 2 روزی برم استراحت کنم تا مغزم سرد شه
نا فرم فسفر سوزوندم این 2 روز
اقا این حرکت رو هم زدم اما بازم خطا میده
اشکال نداره پروژه رو برات بفرستم یه نگا بهش بندازی ؟؟؟
اگه اشکال نداره ایمیلت رو بده
جدا ؟؟؟
خوب چیه ؟؟
چرا بدم بیاد داداش
بگو پدرم درومد !!!!
این کدی که تو فرم گذارش نوشتم
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@yahoo.com