veniz2008
جمعه 16 تیر 1391, 13:01 عصر
سلام دوستان،میخوام که از 3 تا جدول دیتابیسم که با هم ارتباطشون رو برقرار کردم با دستور inner join گزارش بگیرم.من کد مورد نظر رو داخل sql تست کردم و جواب میده،مشکل من با نمایش داده ها درون کریستال هستش(البته با یک جدول قبلا انجام دادم ولی گزارش ترکیبی از چند جدول به مشکل برخوردم)، من تمام کارها رو انجام دادم و جدول ها و فیلدهای مورد نظرم رو به کریستال اضافه کردم،حالا تو محیط ویژوال یک crystalreportviewer گذاشتم و میخوام براساس شناسه کاربری رکوردها رو درون کریستال نمایش بدم ولی هیچ رکوردی رو نمایش نمیده(برنامه هیچ خطایی نداره ولی صفحه گزارش خالی هست)،من از دیتاتیبل استفاده کردم و نتیجه کوئری رو به کریستال ارتباط میدم، همچنین برای اینکه مطمئن بشم دیتاتیبل بصورت صحیح پر شده یک گریدویو گذاشتم و نتیجه دیتاتیبل رو بهش وصل کردم، گرید بدون هیچ مشکلی داده ها رو نمایش میده ولی گزارشم با کریستال خالی از رکورد هست. من کدهایی رو که استفاده کردم میزارم دوستان محبت کنند بگن مشکل کار از کجاست؟(لطفا با زبان #C کدهای لازم رو بگید)
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=KHODRO;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select Users.IDuser,Users.FirstName,Users.LastName,Car.ID Car,Feature.Color,Feature.Model from Users inner join Car on Users.IDUser = Car.IDUser inner join Feature on Car.IDCar = Feature.IDCar where Users.IDUser = '" + textBox1.Text.Trim() +"'", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
ReportDocument rd = new ReportDocument();
rd.Load("rptjoin.rpt");
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Show();
crystalReportViewer1.RefreshReport();
con.Close();
اگر بین بعضی از فیلدها فاصله افتاده بخاطر ادیتور سایت هست وگرنه توی ویژوال فیلدها رو درست تایپ کردم.
دوستان یک عکس از برنامه هم میزارم تا کاملا منظورم رو رسونده باشم:
89285
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=KHODRO;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter("select Users.IDuser,Users.FirstName,Users.LastName,Car.ID Car,Feature.Color,Feature.Model from Users inner join Car on Users.IDUser = Car.IDUser inner join Feature on Car.IDCar = Feature.IDCar where Users.IDUser = '" + textBox1.Text.Trim() +"'", con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
ReportDocument rd = new ReportDocument();
rd.Load("rptjoin.rpt");
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Show();
crystalReportViewer1.RefreshReport();
con.Close();
اگر بین بعضی از فیلدها فاصله افتاده بخاطر ادیتور سایت هست وگرنه توی ویژوال فیلدها رو درست تایپ کردم.
دوستان یک عکس از برنامه هم میزارم تا کاملا منظورم رو رسونده باشم:
89285