PDA

View Full Version : سوال: ایجاد ارتباط بین دو جدول در دلفی



danial123456
شنبه 04 آبان 1387, 16:59 عصر
سلام
من در برنامه ام یک فاکتور فروش دارم که از دو جدول تشکیل شده و فیلد kod faktor در هر دو جدول مشترک هستند ولی نمی تونم تو دلفی ارتباط بین این دو رو برقرار کنم (میخوام kod faktor تو یه table1 وارد بشه و تو table2 هم کپی بشه ) . ضمنا پایگاه داده ها هم با اکسس طراحی شده. لطفا راهنماییم کنید.

danial123456
دوشنبه 06 آبان 1387, 12:10 عصر
من از mastersurce و masterfild استفاده کردم ولی بازم موفق نشدم .
کس جواب منو نمیده؟؟

delphiprog3000
دوشنبه 06 آبان 1387, 13:04 عصر
من از mastersurce و masterfild استفاده کردم ولی بازم موفق نشدم .
کس جواب منو نمیده؟؟

با سلام. دوست من منظور شما از کپی یعنی ورود اطلاعات در یک جدول دیگه؟

شما برای ایجاد حالت Master/Detail از حالت مستر سورس که مربوط به کوری های و دیتاسورس شما میباشد استفاده نمایید.

و نیز میتوانید به صورت دستی حالت مستر دیتیل را ایجاد کنید. یعنی کد مورد نظری که در جدول مستر موجود است را در جدول دیتیل آن وارد کنید.

و برای نمایش آن نیز میتوانید کد اصلی را از جدول مستر بگیرید و آن را در دیتیل آن جستجو نمایید.

بازهم مشکل داشتید مطرح کنید..
موفق باشید................

rezaghman
چهارشنبه 15 آبان 1387, 11:10 صبح
با استفاده از آیکن data base form expert که از گزینه file / new / other از صفحه ی business. کار با هاش سخت نیست فقط باید کمی داخلش بگردی.

mafazel
چهارشنبه 15 آبان 1387, 13:03 عصر
سلام
من در برنامه ام یک فاکتور فروش دارم که از دو جدول تشکیل شده و فیلد kod faktor در هر دو جدول مشترک هستند ولی نمی تونم تو دلفی ارتباط بین این دو رو برقرار کنم (میخوام kod faktor تو یه table1 وارد بشه و تو table2 هم کپی بشه ) .
سلام دوست عزیز
این سوالتون 2 ابهام داره (یکی اینکه آیا اصلا Master-Detail کردن دو تا جدول رو بلدید یا خیر دوم اینکه در وارد کردن اطلاعات و بقول خودتون "توی Table2 هم کپی بشه" مشکل دارید. پست دومتون نشون میده که در تنظیم Master-Detail مشکل دارید. سعی میکنم خیلی خلاصه و خام پاسختون رو بدم:
فرض کنید یک جدول بنام Factors دارید که هر برگ فاکتور رو تعریف میکنه و یک جدول FactorItems دارید که آیتم های فاکتورها رو ذخیره میکنه.
طبیعتا در جدول Factors یک فیلد بنام Kod (بقول خودتون) برای شماره فاکتور در نظر میگیرید که منحصر به فرد هست (فاکتور با شماره های مشابه نداریم). بقیه فیلدها مثل نام خریدار و تاریخ و .. را هم تعریف می کنید.
در جدول FactorItems معمولا یه فیلد Code تعریف می کنید. یک فیلد بنام KodFactor هم تعریف می کنید که کد فاکتوری که این آیتم متعلق به اونه رو ذخیره می کنه. بقیه فیلدها مانند نام جنس و قیمت واحد و تعداد و قیمت کل و ... را هم تعریف می کنید.
حالا توی دلفی دو تا جدول (و دیتا سورس و ...) مثلا با نامهای TbFactors و TbFactorItems میذارید و اونها رو به جداول مربوطه در فایل اکسس وصل میکنید.
بعد سراغ جدول TbFactors میروید. ویژگی MasterSource اونو روی دیتا سورسِ جدول TbFactors (که مثلا اسم اونو DsFactors گذاشتید) تنظیم می کنید. بعد ویژگی MasterFields اونو میزنید از پنجره ظاهر شده از لیست Detail Fields فیلد KodFactor و از فهرست Master Fields فیلد Kod رو انتخاب می کنید و Add می کنید. این ارتباط به قول شما برقرار شده است.
حالا جدول ها رو باز کنید و برنامه رو اجرا کنید.
در DBGrid فاکتورها 2 تا آیتم وارد کنید و مقدار Kod اینها را 1 و 2 بدهید بعد ردیف کد 1 را انتخاب کنید. در DBGrid مربوط به آیتم های فاکتورها 2 مورد را وارد کنید و حتما فیلد KodFactor را 1 وارد کنید. حالا اگر در DBGrid فاکتورها ردیف کد 2 را انتخاب کنید، آیتم های جدول دوم را نخواهید دید و اگر ردیف کد 1 را انتخاب کنید آیتم های مربوطه را خواهید دید. این حالت نشان میده که ارتباط درست برقرار شده.
در مورد ابهام دومتون هیچ چیزی خودبخود کپی نمیشه همه فیلدها رو باید دستی مقدار بدید. مثلا اول باید یه فاکتور تعریف کنید که Kod اونو داشته باشید بعد در جدول آیتم های فاکتور موقع Insert کردن این فیلد KodFactor رو با مقدار Kod مقدار دهی کنید.
امیدوارم پرت نزده باشم. اگه مشکلتون اینا نیست بیشتر توضیح بدید
موفق باشید.

Omid_hope
پنج شنبه 16 آبان 1387, 10:38 صبح
خوب اگه ریلیشین شیپ پایگاه داده ات درست باشه خیلی راحت می تونی بعد از insert کردن به Table1 .
kod Faktor رو بخونی و در فیلد kod Faktor جدول دوم ذخیره کنی.
مثل این
[Table2.fieldvalus['Kod faktor']:=Table1.fieldvalus['Kod faktor']

gholami146
شنبه 07 بهمن 1391, 01:26 صبح
نه دوستان تا اونجایی که من فهمیدم مشکل ایشون اینه که نمی تونه کد یا ID فیلد جدول مستر رو بدست بیاره
راه حل :
اولا شما باید در جدول اصلیتون یک فیلد از نوع آوتو اینکری منت بسازید تا با ایجاد هر رکورد او بطور اتوماتیک 1 واحد بهش اضافه بشه
بعد شما باید در جدول دوم یک فیلد از همون نوع عددی ولی ساده ایجاد کنید
-------------- روش کار
شما باید 1 سند فاکتور جدید رو تولید کنید و ذخیره کنید
بعد باید بزرگترین عدد فیلد اتومات جدول اول رو بخونید و در جدول اقلام یا همون جدول دومتون کپی کنید
وسلام
روش بدست آوردن این کد هم بسیار ساده است با ایجاد یک استاپ پراسیجر و خواندن مقدار برگشتی اون
کد دستورات داخل ایتاپ پراسیجر

CREATE PROCEDURE MaxId
@Max int output
AS
select @Max = (select max(ID) from TblSanad )
return @Max


موفق باشید