PDA

View Full Version : آپدیت کردن چند جدول به صورت همزمان و با یک دستور



programerinfonet
سه شنبه 02 آبان 1391, 10:09 صبح
سلام خدمت شما دوستان عزیز و برنامه نویس
من میخوام ببینم چه طوری می تونم یک مشخصه که تو چند جدول هست رو چه طوری می تونم با یک دستور آپدیت کنم
مثال :
من تو برنامم یک بخش معرفی اشخاص هست و یک بخش هم ثبت سند
حالا می خوام وقتی کاربر نام یک شخص رو تو قسمت معرفی اشخاص ویرایش کرد تمامی سندهایی که به اسم این شخص ثبت شده هم نامش تو سند تغییر کنه
در واقع میخوام یک پارچه سازی کنم
اما نمی دونم چه طوری لطفأ کمکم کنید
ممنون

morteza271
سه شنبه 02 آبان 1391, 10:22 صبح
از کلید خارجی استفاده کنید.
به جای اینکه نام شخص رو در جدولهاتون ذخیره کنید اشخاص رو در یه جدول جدا ذخیره کنید و برای هر شخص یه کلید اصلی در نظر بگیرین
بعد در جدول های دیگه به جای نام شخص کلید اون شخص رو ذخیره کنید

programerinfonet
سه شنبه 02 آبان 1391, 10:32 صبح
یعنی میگید که مثلأ فیلد ID رو که کاربر بهش دسترسی نداره (نمیتونه تغییر بده) استفاده کنم ؟
مشکلی پیش نمیاد ؟؟

morteza271
سه شنبه 02 آبان 1391, 10:40 صبح
آره دقیقا.
راه اصولی همینه.
شما وقتی از ID شخص به جای نام آن در جدول های دیگه استفاده کنید دیگه این مشکلات پیش نمیاد و برای تغییر نام آن نمیخواد تمام جداول رو آپدیت کنید و فقط در جدول اشخاص تغییرش می دین.

programerinfonet
سه شنبه 02 آبان 1391, 11:58 صبح
دوست عزیز من این کار رو انجام دادم اما یک م شکل :
من تو فیلد نام id رو ذخیره کردم اما تو قسمت گزارشکیری که میرم فیلد نام عدد نمایش داده میشه
حالا چه طور بگم که فیلد نام رو بگرده نام رو نمایش بده ؟؟؟

morteza271
سه شنبه 02 آبان 1391, 12:05 عصر
آره دیگه انتظار داری خودش بره و نامش رو از جدول اشخاص بیاره و نشون بده!!!!!!!!!!!

شما باید از Join استفاده کنید و دو جدول رو باهم Join کنید و اطلاعات رو طوری که میخواین نمایش بدین!

اگه join کردن رو نمیدونید چطوریه بگین تا یه نمونه واستون بذارم!

programerinfonet
سه شنبه 02 آبان 1391, 12:08 عصر
دوست عزیز با کمال شرمندگی نمیدونم چه طوریه ؟

morteza271
سه شنبه 02 آبان 1391, 12:23 عصر
شما فرض کنید دو تا جدول دارین به این صورت :
جدول اول:
نام جدول : Perons
ستون های جدول
Id
Name
Famliy

جدول دوم :
نام جدول : Jobs
ستون های جدول :
Id
PersonId
JobName

که در این جدول دوم ستون PersonId کلید خارجی هست و به جدول Persons ارجاع میشه.
حال میخوایم یه کوئری بنوسیم که اطلاعات تمام اشخاص رو به همراه شغل آنها نمایش بده
که برای ان کار از join اسستفاده می کنیم.
به صورت زیر :
Select Persons.Id, Persons.Name, Persons.Family, Jobs.JobName
From Persons INNER JOIN Jobs ON Persons.Id = Jobs.PersonId
موفق باشید

programerinfonet
سه شنبه 02 آبان 1391, 14:10 عصر
دوست عزیز طبق چیزی که از کد بالا فهمیدم این دستور رو نوشتم اما خطا میده
string d;
SqlDataAdapter adap;
DataSet ds = new DataSet();
d = "Select ashkhasgroups.id,ashkhasgroups.groupname,ashkhasgr oups.discription,ashkhas.name,ashkhas.tel,ashkhas. mobile,ashkhas.address From ashkhasgroups INNER JOIN ashkhas ON ashkhasgroup.groupname = ashkhas.groups";
adap = new SqlDataAdapter(d, my_con);
adap.Fill(ds, "ashkhas");
dgv.DataSource = ds.Tables["ashkhas"];

morteza271
سه شنبه 02 آبان 1391, 14:23 عصر
خوب شما که کدتون رو گذاشتین خیلی بهتر بود که متن خطا رو هم میذاشتین!!!

چه خطایی میده؟؟؟

programerinfonet
سه شنبه 02 آبان 1391, 14:28 عصر
این خطا رو میده

94263

programerinfonet
سه شنبه 02 آبان 1391, 14:59 عصر
کمک
یکی کمک کنه

morteza271
سه شنبه 02 آبان 1391, 16:52 عصر
سلام.
مهندس به این قسمت از کوئری تون دقت کنید :
ON ashkhasgroup.groupname = ashkhas.groups
مگه اسم جدول شما ashkhasgroup یا ashkhasgroups ؟؟؟