PDA

View Full Version : سوال: ارتباط جداول



m_azari16
پنج شنبه 04 شهریور 1389, 05:12 صبح
سلام
اگه گزارشمون از چند تا جدول باشه بعد بخواهیم جداول رو فیلتر کنیم چطوری باید این کار رو بکنبم
تو سایت گشتم چیزی که پیدا کردم و مال سورس داکیومنت بود ولی اون هم فقط برای یه جدول جواب می ده و نمی شه تمام جداول رو تک به تک فیلتر کرد
البته من فقط یه جدول اصلی دارم که اگه اون رو فیلتر کنم چون بقیه رو با این جدول ارتباط دادم بقیه هم فیلتر می شند و فقط باید این جدول رو فیلتر کنم می تونید کمکم کنید
یه مشکل دیگه که دارم اینه که اگه جداولی رو که با هم ارتباط دادم از دیتاست پروژه انتخاب کنم هیچی نمایش نمی ده ولی اگه جدا از مسیر خود دیتابیس انتخاب کنم اونوقت نمایش میده مشکل کجاست
با تشکر

multiman
دوشنبه 15 شهریور 1389, 14:10 عصر
سلام
اگه گزارشمون از چند تا جدول باشه بعد بخواهیم جداول رو فیلتر کنیم چطوری باید این کار رو بکنبم
تو سایت گشتم چیزی که پیدا کردم و مال سورس داکیومنت بود ولی اون هم فقط برای یه جدول جواب می ده و نمی شه تمام جداول رو تک به تک فیلتر کرد
البته من فقط یه جدول اصلی دارم که اگه اون رو فیلتر کنم چون بقیه رو با این جدول ارتباط دادم بقیه هم فیلتر می شند و فقط باید این جدول رو فیلتر کنم می تونید کمکم کنید
یه مشکل دیگه که دارم اینه که اگه جداولی رو که با هم ارتباط دادم از دیتاست پروژه انتخاب کنم هیچی نمایش نمی ده ولی اگه جدا از مسیر خود دیتابیس انتخاب کنم اونوقت نمایش میده مشکل کجاست
با تشکر

من اين مشكل رو داشتم ،حلش كردم.
ابتدا در sql server يه View درست كن براي اين كار روي View كليك راست كن و گزينه Add new view را انتخاب كن. بعد از اين كار فرم Add table نمايش داده ميشه. جدول هايي رو كه مي خواي يا با هم ارتباط دارند و مي خواي در گزارش گيري از آن ها استفاده كني را انتخاب كن بعد از اين از جدول هايي كه انتاب كردي فيلد هاي مورد نظرت را انتخاب كن، همون طور كه مي بيني به طور اتوماتيك كد ها در پايين توليد ميشن. براي آزمايش درستي خروجي دكمه Execute Sql را كليك كن و خروجي رو ببين. اگر خروجي همون چيزي بود كه مي خواستي View را Save كن و يه اسم در هنگام Save كردن به View بده.
بعد يه ديتاست در برنامه Visul Studio درست كن.
بعد روي ديتا بيس كليك راست كن و گزينه Open را انتخاب كن. بعد از اين كار بر روي صفحه كليك راست كن و گزينه Add وبعد DataTable را انتخاب كن و اون فيلد هاي را كاه در View انتخاب كردي رو در اين DataTable كه درست كردي اضافه كن. براي اين كار هم روي جدول كليك راست كن و گزينه Add وبعد Column را انتاب كن و فيلد هاي مرد نظر را بهش اضافه كن. فيلد ها هم نام فيلد هاي View باشه. بعد يه كريستال ريپورت درست كن كه فيلد هاش از اين DateTable باشه كه درست كردي.
و در آخر در قسمت كد اين دستور Select را اضافه كن و تنظيمش كن با ديتاسورس كريستال ريپورتت



Reportdocument rd = new reportdocument
strig st="SELECT * from View where name='" + name.text +"'";
DataTable dt = new DataTable();
dt.Clear();
sqldataadapter da= new sqldataapter()
da.Fill(dt);
rd.SetDataSource(dt);
crystalReportViewer1.ReportSource = rd;
crystalReportViewer1.Show();

vba_hadi
سه شنبه 16 شهریور 1389, 11:34 صبح
سلام دوستان،
یکی کمک کنه. چند وقتیه هر کاری میکنم درست نمیشه. خیلی هم ضروریه
من میخوام از ترکیب دو جدول در C# با کریستال ریپورت گزارش بسازم. دو جدول را با inner join به هم مرتبط کردم. لازم به ذکره که دستورات SQL را درست زدم چون تعداد رکوردهای برگشتی درست است یعنی در دستوراتSQL مشکلی ندارم.
ولی در صفحه کریستال میاید تمام رکوردهای دو جدول را نشان میده.
تو سایتهای خارجی هم گشتم چیزی گیر نیاوردم
یکی زود جواب بده.ممنون
اینم کد:


ReportDocument oRpt = new ReportDocument();

string ConnectionString = "استرینگ مورد نظر"
con = new SqlConnection(ConnectionString);
con.Open();
string query = "کوئری مورد نظر"

SqlDataAdapter Oracleadpat = new SqlDataAdapter(query, con);
DataSet dataReport = new DataSet();
Oracleadpat.Fill(dataReport);
int aa = dataReport.Tables[0].Rows.Count; //"در اینجا تعداد رکوردهای برگشتی صحیح است"


oRpt.Load("D:\\Web\\CrystalReport1.rpt");
oRpt.SetDataSource(dataReport);
oRpt.SetDatabaseLogon("sa", "123", "myServer", "SampleWeb");
CrystalReportViewer1.ReportSource = oRpt;
con.Close();

multiman
چهارشنبه 17 شهریور 1389, 10:49 صبح
من كه تو قسمت بالا گفتم كه چه كار بايد كني.
بايد يه View درست كني وبه جاي dataset بايد از datatable استفاده كني. توضيات بالا رو بخون حتما به جواب ميرسي.