ورود

View Full Version : سوال: مشکل در مقدار دهی جداول مرتبط به هم



Given_RL
سه شنبه 15 تیر 1389, 14:41 عصر
با سلام
من هر چی گشتم تاپیکی با این موضوع پیدا نکردم

مشکل من مقدار دهی به 2 جدول مرتبط به هم در دلفی است
توضیح بیشتر

برنامه ای که من نوشتم یک برنامه جستجوی ساده املاک می باشد که کاربر در آن قادر خواهد بود مالکی رو تعریف و چند ملک برای اون ثبت کنه و سپس جستجو کنه

بانک اطلاعاتی که من استفاده کردم اکسسه و در اون 2 تا جدول به نام مالک و ملک دارم که کد ملک جدول مالک با کد ملک جدول ملک ارتبط یک به چند داره ...یعنی هر مالکی میتونه چند تا ملک داشته باشه.
حالا مشکلم :
من یک فرم درست کردم که در اون کاربر می تونه مالک و مشخصات اون رو ثبت کنه و در همون فرم یک button گذاشتم که با کلیک اون به فرم دیگه ای منتقل مشه که در اونجا کاربر می تونه برای مالک صفحه قبلی چند ملک رو وارد کنه
مشکل اینجاست که وقتی می خوام ملک ها رو ثبت کنم چنین اروری دارم :
'فلان'you cannot add ot change a record because a related record is required in table

هر کاری می کنم نمی فهمم کدوم فیلدم ارتباط داره ...
فکر می کنم چون من فیلد کد ملک رو در هر دو جدول کید اصلی تعریف کردم چنین مشکلی دارم

در صورت امکان لطفا من رو راهنمایی کنید ... مرسی

Given_RL
سه شنبه 15 تیر 1389, 15:17 عصر
مرسی از این همه توجه ....دوستان هم اکنون نیازمند یاری سبزتان هستیم !!!!

حمیدرضاصادقیان
سه شنبه 15 تیر 1389, 16:27 عصر
سلام. دوست عزیز شما که میخواهید اطلاعات مربوط به ملک رو وارد کنید یا باید با دستورات insert کار کنید یا باید با استفاده از adotable,adoquery به جدول مربوطه وصل بشید بعد اطلاعات رو وارد کنید.
با استفاده از دستور insert به فرم زیر میشه.


with adoquery1 do
Begin
sql.clear;
sql.add('insert into table1 (field1,field2) values(:fl1,:fl2)');
parameters.parambyname('fl1').value:=edit1.text;
parameters.parambyname('fl2').value:=edit2.text
execsql;
End;

که فیلد 1 فرضا همون کد مالک هست و فیلددوم به بعد هم مشخصات ملک هست.
در روش دوم شما به این صورت عمل می کنید.



With adoquery1 Do
Begin
sql.clear;
sql.add('select * from table1');
open;
End;

ابتدا تمام مقادیر جدول 1 در کوئری شما load میشه.بعد از اون شما با استفاده از Dbedit,dbcombobox,... که روی فرم قرار دادید و با استفاده از دستورات adoqeuery1.insert,adoquery1.post کار خودتونو انجام میدید/

نکته : شما لزومی نداره در دو جدول اضافه کنید.شما وقتی میخواهید مشخصات ملک جدید رو برای یک مالک ثبت کنید، وقتی روی یک مالک کلیک میکنید مقدار کد اون مالک رو در یک فیلد ذخیره کنید بعد اطلاعات ملک رو فقط در جدول ملک وارد کنید و کد مالک هم از فیلد مربوطه فراخوانی کنید.

موفق باشید.

حسین شهریاری
سه شنبه 15 تیر 1389, 21:18 عصر
میشه از Master/Details استفاده کرد.