ورود

View Full Version : سوال: inner join



kamran_fa
پنج شنبه 17 بهمن 1387, 23:13 عصر
دوستان سلام من 2 تا Table دارم از ADODataSet برای وصل شدن استفاده کردم
ADODataSet1.CommandText:=
'select * from table1 '

ADODataSet2.CommandText:=
'select * from table2 inner join tble1 on table1.name= table2.name'

از Master/Detail هم استفاده کردم
ADODataSet1.MasterFields:=name;name
مشکل اینجاست که اگه یک رکورد از Table2 را delete کنم رکورد table 1 هم delete میشه
مشکل دوم اگه LockType رو ltBatchOptimistic کنم
بعد از post و UpdateBatch
تغییرات اعمال نمیشه
ممنون میشم کسی کمک کنه

vcldeveloper
جمعه 18 بهمن 1387, 02:54 صبح
علتش اینه که برای ADO مشخص نیست باید رکورد مربوط به کدومیک از جدولهای استفاده شده در Join را حذف یا ویرایش کنه.

وقتی دارید از MasterField استفاده می کنید، دیگه نیازی نیست در دستور SQL هم inner join را بنویسید. ADO خودش Join را انجام میده. شما فقط یک Select بنویسید که برای دیتاست اول فیلدهای مورد نظرتان را برگرداند، و یک Select برای دیتاست دوم که فیلدهای مورد نظر را برگرداند، بعد با استفاده از MasterField، بین آنها رابطه Master\Detail برقرار کنید.