PDA

View Full Version : ارتباط بین جدولها و استفاداز داده هاشون................؟



tik_tak
پنج شنبه 02 اسفند 1386, 00:17 صبح
با سلام
من یه جدول دارم جدول تلفن همراه به این شکل


نام گوشی(کلید اصلی) قیمت گوشی
------------- ----------------




جدول دوم : جدول فروش

نام گوشی قیمت گوشی(خریده شده ) قیمت فروخته شده تعداد
----------- ----------------------------- ----------------------- ----------




تو اکسس من این دو جدول رو بهم ربط دادم
میخوام بدونم چه طور وقتی کاربر مثلا تو جدول فروش میزنه k750 قیمته گوشی بدون اینکه بخواد خودش
دستی تایپ کنه از جدول گوشی وارد جدول 2 بشه ؟

یعنی چه طوری از ارتباط جدولا استفاده میشه؟

Mo1659
پنج شنبه 02 اسفند 1386, 03:06 صبح
برای ارتباط بین دو جدول اول باید دو جدول فیلد مشترک داشته باشند و نوع و اندازه فیلد مشترک در دو جدول یکی باشه دوم باید دو جدول نسبت به فلد مشترک ایندکس شده باشند (اگه فیلد مشترک برای جدول دوم فیلد کلید باشه نیازی به ایندکس فیلد مشترک نیست) حالا بوسیله خواص دو جدول اونا رو به هم ربط میدی مثلا
خواص جدول اول را به صورت زیر تعریف میکنی:

tabel1.databasename:='dbdemoes';
tabel1.tabelname:='نام جدول1';
datasource1.dataset:=tabel1;
خواص جدول دوم رو هم اینجوری تعریف میکنی:

tabel2.databasename:='dbdemoes';
tabe2.tabelname:='نام جدول2';
tabel2.indexname:='نام فیلد ایندکس';
tabel2.masterfields:='نام فیلد مشترک';
tabel2.mastersource:=datasource1;
datasource2.dataset:=tabel2;
حالا خاصیت Active دو جدول را True میکنی و با دستور Open اونا رو باز میکنی اینجوری 2 جدول در یک فیلد مشترک شدن و اطلاعاتشون قابل دسترسی میشه.

SYNDROME
پنج شنبه 02 اسفند 1386, 06:06 صبح
زمانی که کاربر نام گوشی را مثلا در Edit وارد کرد و باز زدن کلید Enter شما جدول 1 نام را جستجو کنید و قسمت را در Box مورد نظر بندازید.
موفق باشید

tik_tak
پنج شنبه 02 اسفند 1386, 08:35 صبح
سلام
ممنونم ازهمه.
من اینجاهاشو نفهمیدم برام توضیح بدین:


جدول نسبت به فلد مشترک ایندکس شده باشند

و


با دستور Open اونا رو باز میکنی

یعنی هر تغییری تو جدول اصلی بدم تو جدول فرعی ام اعمال میشه؟مثلا قیمت رو تغییر بدم
تو دومی ام اعمال میشه
مرسی

Amir_Safideh
پنج شنبه 02 اسفند 1386, 10:52 صبح
خوب دوست عزیز برای این کار لازمه که این کار رو بکنی . فرض میکنیم که جدولی که نام گوشی و قیمت اون رو نگه میداره ADOTable1 و جدول دوم هم اسمش ADOTable2 هستش .
خوب حالا اینطوری ادامه میدیم . فکر کنیم که کاربر داره اصلاعات رو در جدول دوم وارد میکنه و باز فرض میکنیم که کاربر نام گوشی رو در Edit1 وارد میکنه حالا میخواهیم زمانی که کاربر از Edit1 خارج میشه قیمت گوشی رو در فیلد قیمت در جدول دوم قرار بگیره این هم کدش :

procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Edit1.Text <> '' then
begin
if ADOTable1.Locate('GOOSHI',Edit1.Text,[LoCaseInSensitive]) = True then
ADOTable2.FieldByName('GHIMATE_KHARID').AsFloat := ADOTable1.FieldByName('GHEIMAT').AsFloat;
end;
end;

tik_tak
پنج شنبه 02 اسفند 1386, 15:08 عصر
با سلام
برای این کد


procedure TForm1.Edit1Exit(Sender: TObject);
begin
if Edit1.Text <> '' then
begin
if ADOTable1.Locate('GOOSHI',Edit1.Text,[LoCaseInSensitive]) = True then
ADOTable2.FieldByName('GHIMATE_KHARID').AsFloat := ADOTable1.FieldByName('GHEIMAT').AsFloat;
end;
end;

باید دو جدول وبهم ربط داد
وهمون تنظیماتmastersourc , master field
?
اگه اینجوری باشه ممکن اون جدول پیرو م به جدولای دیگه یم وصل باشه
و نسبت به اون جدولام پیرو باشه
اون وقت نمیشه دیگه تنظیماتmastersourc , master field رو عوض کرد....!

Amir_Safideh
پنج شنبه 02 اسفند 1386, 17:47 عصر
باید دو جدول وبهم ربط داد
وهمون تنظیماتmastersourc , master field
?
نخیر برای اجرای این کد اصلا لازم نیست که جدولها به هم وصل باشند و براحتی جواب میده و نیاز به ارتباط بین جداول نیست .