ورود

View Full Version : دستورات SQL و مشکل با CR



fazel-d
یک شنبه 08 شهریور 1388, 17:36 عصر
من در ابتدا یه فایل rpt ایجاد می کنم و تنظیمات لام جهت استفاده از جدول خودم رو انجام می دم. با دستورات زیر به CR وصل می شم( داده ها رو پاس می کنم):


String strCom = "select * from sp_table where id='6650'";
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(strCom, con);
System.Data.SqlClient.SqlDataAdapter adap = new System.Data.SqlClient.SqlDataAdapter(com);
System.Data.DataSet set = new System.Data.DataSet();
if (con.State == System.Data.ConnectionState.Closed)
{
con.Open();
adap.Fill(set, "tbl");
String strReportPath = Server.MapPath("CrystalReport.rpt");
CrystalDecisions.CrystalReports.Engine.ReportDocum ent crystal = new CrystalDecisions.CrystalReports.Engine.ReportDocum ent();
crystal.Load(strReportPath);
crystal.SetDataSource(set);
CrystalReportViewer1.ReportSource = crystal;
}
con.Close();

اما مشکل در دستورات داخلی SQl و شرط Where در دستور select بالا است. که Id=6650 رو صرفا نمی یاره. بلکه تمامی رکرودها رو نشون می ده.
حالال چی کار باید بکنم؟

f_naderi
یک شنبه 08 شهریور 1388, 22:28 عصر
سلام به جواب سوالتون در گزارش سازی با کریستال ریپورت نگاه کنید

viper2009
یک شنبه 08 شهریور 1388, 23:47 عصر
من در ابتدا یه فایل rpt ایجاد می کنم و تنظیمات لام جهت استفاده از جدول خودم رو انجام می دم. با دستورات زیر به CR وصل می شم( داده ها رو پاس می کنم):


String strCom = "select * from sp_table where id='6650'";
System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(strCon);
System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand(strCom, con);
System.Data.SqlClient.SqlDataAdapter adap = new System.Data.SqlClient.SqlDataAdapter(com);
System.Data.DataSet set = new System.Data.DataSet();
if (con.State == System.Data.ConnectionState.Closed)
{
con.Open();
adap.Fill(set, "tbl");
String strReportPath = Server.MapPath("CrystalReport.rpt");
CrystalDecisions.CrystalReports.Engine.ReportDocum ent crystal = new CrystalDecisions.CrystalReports.Engine.ReportDocum ent();
crystal.Load(strReportPath);
crystal.SetDataSource(set);
CrystalReportViewer1.ReportSource = crystal;
}
con.Close();

اما مشکل در دستورات داخلی SQl و شرط Where در دستور select بالا است. که Id=6650 رو صرفا نمی یاره. بلکه تمامی رکرودها رو نشون می ده.
حالال چی کار باید بکنم؟

باید DataSet رو خالی کنی یا یک دونه جدید با نام جدید بسازی .(اگر فیلترنمی شه)

fazel-d
دوشنبه 09 شهریور 1388, 17:54 عصر
اینکه خیلی مسخره هست که من یه object از dataset بسازم و باز بخوام دوباره new کنم.

یه مشکل دیگه :

#region Set DBLogon Report Method

private void SetDBLogonReport(ConnectionInfo connectionInfo)
{
TableLogOnInfo tableLogOnInfo = CRView.LogOnInfo;

foreach (TableLogOnInfo TLogonInfo in tableLogOnInfo)
{
TLogonInfo.ConnectionInfo = connectionInfo;
}
}
#endregion

در خط

TableLogOnInfo tableLogOnInfo = CRView.LogOnInfo;
اشکال می گیره و میگه امکان covert نیست

viper2009
سه شنبه 10 شهریور 1388, 01:39 صبح
اینکه خیلی مسخره هست که من یه object از dataset بسازم و باز بخوام دوباره new کنم.

یه مشکل دیگه :

#region Set DBLogon Report Method

private void SetDBLogonReport(ConnectionInfo connectionInfo)
{
TableLogOnInfo tableLogOnInfo = CRView.LogOnInfo;

foreach (TableLogOnInfo TLogonInfo in tableLogOnInfo)
{
TLogonInfo.ConnectionInfo = connectionInfo;
}
}
#endregion

در خط

TableLogOnInfo tableLogOnInfo = CRView.LogOnInfo;
اشکال می گیره و میگه امکان covert نیست

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

ضمناً شما با سی شارپ کار می کنید من با وی بی.

آیا شما می خواهید کریستال رو از طریق کد اتصال بدید ؟ بهتره با ویزاردش این کارو انجام بدی تااول مطمئن بشی که اتصال مشکلی نداره بعد برو سراغ فیلتر کردن.

fazel-d
سه شنبه 10 شهریور 1388, 11:51 صبح
ما مشکل در دستورات داخلی SQl و شرط Where در دستور select بالا است. که Id=6650 رو صرفا نمی یاره. بلکه تمامی رکرودها رو نشون می ده.
حالال چی کار باید بکنم؟ در مورد خطا هم ، مشکل رفع شد . می بایست از کلاس TableLogOnInfos استفاده می کردم.