PDA

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



fazel-d
یک شنبه 08 شهریور 1388, 17:30 عصر
من در ابتدا یه فایل 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:21 عصر
سلام کدتون رو باید به این صورت تغییر بدید
adap=new dataadapter(strcom,con);
adap.fill(set);
چون دیتاست شما باید با دستور select مورد نظر شما پر بشه

fazel-d
دوشنبه 09 شهریور 1388, 17:59 عصر
سلام کدتون رو باید به این صورت تغییر بدید
adap=new dataadapter(strcom,con);
adap.fill(set);
چون دیتاست شما باید با دستور select مورد نظر شما پر بشه
با این کاری که گفتین هم نشد. آخه چه ربطی داره که به جای Command از Adapter استفاده بشه!!!!

یه مشکل دیگه :

#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 نیست

f_naderi
دوشنبه 09 شهریور 1388, 22:17 عصر
دوست عزیز شما COMMAND را نوشتید ولی نه از EXECUTENONEQUERY استفاده کردی و نه از EXECUTEREADER ، شما SELECT را نوشتید ولی موقع پر کردن دیتا آداپتر نوشتید که با جدول اصلی پر کنه نه با دستور SELECT ، من به همین صورت اطلاعات را از دیتابیس استخراج کردم و توی کریستال ریپورت نمایش دادم.

fazel-d
سه شنبه 10 شهریور 1388, 11:58 صبح
مشکل دوم حل شد یعنی کد زیر:

TableLogOnInfos tableLogOnInfo = CRView.LogOnInfo;در مورد اولی من اون راهی رو که گفتین رو رفتم ولی جواب نداد

adap=new dataadapter(strcom,con);
adap.fill(set);
چون دیتاست شما باید با دستور select مورد نظر شما پر بشه

شما می تونید یه PDF 550 صفحه ای در مورد کریستال از اینجا دانلود (http://pardis.web.officelive.com/Downloads.aspx)کنید