PDA

View Full Version : مشکل درdataset و نمایش اطلاعات در datagride



mohsen_zelzela00
پنج شنبه 11 تیر 1388, 22:36 عصر
من دوجدول دارم که یکی کد کالا و نام کالا و دومی ردیف و کد کالا و قیمت فروش و تعداد موجود در انبار رو به من نشون میده حالا میخوام اطلاعات جدول دوم خودم را در برنامه ام نشون بدم ولی می خوام در برنامه خودم به جای کد کالا نام کالا رو به من نشون بده ممنون میشم دوستان کمکم کنن

vandermond
پنج شنبه 11 تیر 1388, 23:03 عصر
ميتوني از JOIN IN استفاده كني.
JOIN table1.CalaName IN table1.CalaCode=table2.CalaCode
الان نميتونم بيشتر توضيح بدم. باشه فردا صبح بيشتر توضيح ميدم اگه خواستيد.


ويرايش: دستوري كه گفتم JOIN ON هستش كه اشتباهي JOIN IN زدم. ببخشيد. يه مشكل ديگه هم داره كه تو پست بعدي بيشتر توضيح ميدم. باز هم ببخشيد.

m0rteza
پنج شنبه 11 تیر 1388, 23:09 عصر
یک کار بد!!!
در رویداد CellFormating از دیتا گرید با دستور e.value کد کالا رو بگیرید و بعد با
Select Name From Tbl_Kala where Codekala=e.value
نام کالا را بدست بیارید و در e.value بزارید یعنی
e.value=DS.Table[0].rows[0]["Name"].tostring();

این کار خیلی بی کلاسه !!!!!!!

بهتر از این که با یک ساب کوئری در همون کوئری اصلی فرمتون نام کالا را بگیرید .

mohsen_zelzela00
جمعه 12 تیر 1388, 00:31 صبح
ميتوني از JOIN IN استفاده كني.
JOIN table1.CalaName IN table1.CalaCode=table2.CalaCode
الان نميتونم بيشتر توضيح بدم. باشه فردا صبح بيشتر توضيح ميدم اگه خواستيد.
ممنون میشم بیشتر توضیح بدید...........

vandermond
جمعه 12 تیر 1388, 07:09 صبح
دستور JOIN table1 ON table2.field1=table1.field1 در واقع ميگه كه ركوردهايي از table1 رو اضافه كن كه براي اون ركوردها : «فيلد1 جدول2 برابر باشه با فيلد1 جدول1» .
براي اينكه روشن تر بشه من همون كه شما گفتيد رو نام كالا رو گرفتم CalaName و كد كالا رو گرفتم CalaCode جدول ها هم با همون ترتيبي كه شما گفتيد. كد پايين رو ببينيد(اگه دوتا جدول توي يك ديتابيس هستند اين ميشه. اگه نيستند بگيد):

SELECT CalaName,Radif,Price,TedadeMojood
FROM table2
JOIN table1 ON table2.CalaCode=table1.CalaCode
در قسمت SELECT ميتونيد اطلاعات رو از دو جدول يك ديتابيس بگيريد و در قسمت FROM اسم يكي از اونها رو مينويسيد(معمولا اصليه رو مينويسن). JOIN ON هم كه توضيح دادم ديگه . اون ركوردهايي كدشون تو جدول1 برابر باشه با كد يك ركورد تو جدول2 اضافه ميكنه ولي خود CalaCode رو نشون نميده بلكه اون ركوردها رو انتخاب ميكنه و چيزهايي كه SELECT كرديد رو نمايش ميده.
اميدوارم مفيد بوده باشه...

mohsen_zelzela00
شنبه 13 تیر 1388, 00:26 صبح
دستور JOIN table1 ON table2.field1=table1.field1 در واقع ميگه كه ركوردهايي از table1 رو اضافه كن كه براي اون ركوردها : «فيلد1 جدول2 برابر باشه با فيلد1 جدول1» .
براي اينكه روشن تر بشه من همون كه شما گفتيد رو نام كالا رو گرفتم CalaName و كد كالا رو گرفتم CalaCode جدول ها هم با همون ترتيبي كه شما گفتيد. كد پايين رو ببينيد(اگه دوتا جدول توي يك ديتابيس هستند اين ميشه. اگه نيستند بگيد):

SELECT CalaName,Radif,Price,TedadeMojood
FROM table2
JOIN table1 ON table2.CalaCode=table1.CalaCode
در قسمت SELECT ميتونيد اطلاعات رو از دو جدول يك ديتابيس بگيريد و در قسمت FROM اسم يكي از اونها رو مينويسيد(معمولا اصليه رو مينويسن). JOIN ON هم كه توضيح دادم ديگه . اون ركوردهايي كدشون تو جدول1 برابر باشه با كد يك ركورد تو جدول2 اضافه ميكنه ولي خود CalaCode رو نشون نميده بلكه اون ركوردها رو انتخاب ميكنه و چيزهايي كه SELECT كرديد رو نمايش ميده.
اميدوارم مفيد بوده باشه...
من کد زیر را نوشتم


OleDbConnection c = newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\E-Commerce.accdb");
OleDbCommand cmd1 = newOleDbCommand("select * from Products join Categories ON Products.CategoryID=Categories.CategoryID ", c);
OleDbDataAdapter da1=newOleDbDataAdapter(cmd1);
DataSet ds1=newDataSet();
da1.Fill(ds1, "a");
dataGridView2.DataSource = ds1.Tables[0];

و error زیر رو به من میده ......
http://barnamenevis.org/forum/attachment.php?attachmentid=32656&d=1246652767
ممنون میشم دوستان کمکم کنن

mohsen_zelzela00
شنبه 13 تیر 1388, 01:26 صبح
بلاخره تونستم با کد زیر join رو بنویسم


OleDbConnection c = newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\E-Commerce.accdb");
OleDbCommand cmd1 = newOleDbCommand("select Products.Code,Products.Model,Categories.Name From Products LEFT join Categories ON Products.CategoryID= Categories.CategoryID ", c);
OleDbDataAdapter da1=newOleDbDataAdapter(cmd1);
DataSet ds1=newDataSet();
da1.Fill(ds1, "a");
dataGridView2.DataSource = ds1.Tables[0];




ولی حالا یک مشکل اگه بخواهم روی جدول products خودم یک where اعمال کنم و نتیجه اونو با جدول categories ، ادقام کنم(join کنم)کد where خودم رو باید کجا بنویسم

mohsen_zelzela00
شنبه 13 تیر 1388, 01:29 صبح
بلاخره تونستم با کد زیر join رو بنویسم


OleDbConnection c = newOleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\E-Commerce.accdb");
OleDbCommand cmd1 = newOleDbCommand("select Products.Code,Products.Model,Categories.Name From Products LEFT join Categories ON Products.CategoryID= Categories.CategoryID ", c);
OleDbDataAdapter da1=newOleDbDataAdapter(cmd1);
DataSet ds1=newDataSet();
da1.Fill(ds1, "a");
dataGridView2.DataSource = ds1.Tables[0];




ولی حالا یک مشکل اگه بخواهم روی جدول products خودم یک where اعمال کنم و نتیجه اونو با جدول categories ، ادقام کنم(join کنم)کد where خودم رو باید کجا بنویسم

به صورت زیر نوشته میشه


OleDbCommand cmd1 = new OleDbCommand("select Products.Code,Products.Model,Categories.Name From Products LEFT join Categories ON Products.CategoryID= Categories.CategoryID where Products.Code=@t", c);