PDA

View Full Version : استفاده از dataadapter.update برای جدول join شده



xxxxxxxxxx
شنبه 24 شهریور 1386, 15:31 عصر
اول اینکه خیلی جستجو کردم چیز بدرد بخور نیافتم
مثال:یک جدول مشخصات نقاش ویک جدول مشخصات نقاشی ویک جدول مشخصات محل تولد نقاش .رابطه جدول اول به ودومی 1به چند ورابطه جدول اول به وسومی 1به 1است.
می خوام برای هربار تغییر یا ایجاد یا حذف رکورد نقاش یا نقاشیها کد ننویسم و ارتباط برقرار کنم وآخرسر یکباره dataadapter.update کنم
اما مشکل آنجاست که برای استفاده از dataadapter.update باید دوشرط برقرار باشد:1-هردیتاست یک تیبل داشته باشد2-تیبل باید مستقیم ازیک تیبل در دیتابیس گرفته شده باشد نه اینکه جوین شده باشد.
درضمن درفرمم می خواستم ترکیبی از تیبل اول و سومم رادر یک گریدویو بایند کنم ونمایش دهم ام با این شرط که قابلیت ویرایش ازگریدویو حذف نشود.برای پاسخهاتون یک صلوات وبرای پاسخهای مفیدتون دوتا صلوات می فرستم مخصوصا الان که ماه رمضونه:خجالت:

Rocker
شنبه 24 شهریور 1386, 15:38 عصر
میتونی بهتر توضیح بدی

xxxxxxxxxx
شنبه 24 شهریور 1386, 15:40 عصر
چیشو توضیح بدم؟

SalarSoft
شنبه 24 شهریور 1386, 23:18 عصر
چنین امکانی وجود ندارد.

متد update برای هر جدول از SQL query که از یک کلید اصلی (Primary key) استفاده می کنه
ولی در اینجا چون دو جدول وجود دارند امکان ایجاد دستور update درSQL برای هر دو جدول به طور همزمان وجود نداره
پس درنتیجه امکان پذیر نیست.

PC2st
یک شنبه 25 شهریور 1386, 05:49 صبح
http://www.codeproject.com/cs/database/relationaladonet.asp?df=100&forumid=14883&exp=0&select=1156756

http://msdn2.microsoft.com/en-us/library/ms171933(VS.80).aspx

xxxxxxxxxx
سه شنبه 27 شهریور 1386, 23:28 عصر
جالب بود .داشتم کم کم فکر می کردم سوال را واقعا بد مطرح کردم.آن یکی سوال را هم اگر جواب دهید تشکر می کنم . تصور می کنم بشود دو جدول،یکی مشخصات نقاش ودیگری اسامی شهرها بهمراه کدشهر جهت نشستن در فیلد کد محل تولد جدول نقاش ،را،کنار هم طوری درجدول (ونیز در gridveiw)قرارداد وهرکدام به فیلد مربوطه بایند بشوند که کاربر بجای فیلد کدشهر نام شهر را ببیند(بعبارتی این فیلدمشترک دو جدول است).لازم بیادآوری است که قرار نیست این دوجدول باهم ترکیب شوند یا جوین شوند به این دلیل که می خواهیم در انتها از ()dataadapter.update استفاده شود.ممنون از راهنمائیتون:خجالت:

PC2st
چهارشنبه 28 شهریور 1386, 04:28 صبح
تصور می کنم بشود دو جدول،یکی مشخصات نقاش ودیگری اسامی شهرها بهمراه کدشهر جهت نشستن در فیلد کد محل تولد جدول نقاش ،را،کنار هم طوری درجدول (ونیز در gridveiw)قرارداد وهرکدام به فیلد مربوطه بایند بشوند که کاربر بجای فیلد کدشهر نام شهر را ببیند(بعبارتی این فیلدمشترک دو جدول است).

به مثال زیر توجه کنید، خود کدها گویای مطلب هست:


DataSet ds = new DataSet();
DataTable dt1 = new DataTable("Master");
DataTable dt2 = new DataTable("Detail");

ds.Tables.Add(dt1);
ds.Tables.Add(dt2);

dt1.Columns.Add("ID", typeof(int));
dt1.Columns.Add("Company", typeof(string));
dt2.Columns.Add("ID", typeof(int));
dt2.Columns.Add("Product", typeof(string));

ds.Relations.Add("MyRelation", dt1.Columns["ID"], dt2.Columns["ID"]);

dt1.Rows.Add(1, "Microsoft");
dt1.Rows.Add(2, "Adobe");
dt2.Rows.Add(1, "Windows");
dt2.Rows.Add(1, "Visual Studio");
dt2.Rows.Add(2, "Photoshop");
dt2.Rows.Add(1, "Office");
dt2.Rows.Add(2, "Acrobat Reader");
dt2.Rows.Add(2, "Image Ready");

dt2.Columns.Add("Company", typeof(string), "Parent.Company");

dataGridView1.DataSource = dt2;
dataGridView1.Columns["ID"].Visible = false;


کدهای فوق از منبع زیر برداشته شده اند:
http://www.vb-tips.com/default.aspx?ID=5fd5a8cf-54dc-4946-a193-8a9529b2b38b

xxxxxxxxxx
شنبه 31 شهریور 1386, 13:25 عصر
زحمت کشیدید.ممنون.قابل استفاده بود ولی چون چند relation وچند جدول parend داشتیم در جدول child برای اضافه کردن ستون جداول پدر به جدول فرزند ایراد گرفت .در هنگام اجرای کد زیر

dt2.Columns.Add("Company", typeof(string), "Parent.Company");
گفت که چون چند تا رابطه داری باید نام رابطه بگویید،ضمن تقاظا برای راهنمائی ،کمی توضیح برای خاصیت

), "Parent.Company");
بدید صلوات می فرستم براتون

PC2st
شنبه 31 شهریور 1386, 14:42 عصر
وقتی که چند relation و جدول master و detail داریم، باید نام relation هم ذکر بشه، مثلا اگر نام relation برابر RelationName باشه، کد رو باید بصورت زیر بنویسید:


dt2.Columns.Add("Company", typeof(string), "Parent(RelationName).Company");


در مورد این نوع عبارت باید بگم که این عبارت (مثلا متن Parent.Company) در خاصیت Expression از DataColumn قرار داده میشه و خاصیت DataColumn.Expression هم برای انجام اعمال بیشتر بر روی ستون بکار میره، برای اطلاعات بیشتر، متن "DataColumn.Expression" رو در MSDN جستجو کنید. مثلا توسط این نوع عبارات میتونید از توابع مشابه SQL نظیر SUM, AVG, MIN, COUNT و غیره، هم استفاده کنید.