PDA

View Full Version : سوال: نمایش Join در Dbgrid



delphiprog3000
شنبه 18 خرداد 1387, 14:36 عصر
با سلام.
سوالم اینه که وقتی میخوایم از چند جدول جوین بگیریم. و با استفاده از AdoQuery آیا بهتره که از یک کوری استفاده کنیم یا از چند تا؟

اگه اینطور باشه نمایش فیلدهای آنها در Dbgrid به چه صورتی میشود؟
یعنی Dbgrid ما تابع چند کوری است؟
و چگونه تمامی فیلدهای هر کوری را به dbgrid پاس دهیم؟
با تشکر...........................

لاله86
یک شنبه 19 خرداد 1387, 06:58 صبح
سلام. دوست عزیز .
من خودم این کار رو کردم. و دی بی گرید هم دقیقا نتیجه کوری رو بر میگردونه.من با یه کوری انجام دادم.
موفق باشی

حمیدرضاصادقیان
یک شنبه 19 خرداد 1387, 07:49 صبح
سلام.شما میتونی query فوق رو در یک Adoquery بنویسید یا در یک view یا sp بنویسید بعد اونو صدا بزنید و نیازی نیست چند adoquery بذارید . یک datasource به یک adoquery وصل میکنی بعد Query خودت رو به adoqueryوصل میکنی که به راحتی در دی بی گرید نمایش میدهد.

delphiprog3000
یک شنبه 19 خرداد 1387, 11:34 صبح
سلام به دوستان عزیز.
از پاسخ شما ممنونم .

شما منظورتون اینه که از Store procedure در sql استفاده کنم و بعد اونو به برنامه ارتباط بدم.
نظر جالبیست.

خب آیا با استفاده از همان Adoquery تنها نمیشود؟

با تشکر..............

delphiprog3000
یک شنبه 19 خرداد 1387, 11:36 صبح
سلام. دوست عزیز .
من خودم این کار رو کردم. و دی بی گرید هم دقیقا نتیجه کوری رو بر میگردونه.من با یه کوری انجام دادم.
موفق باشی

سلام . دوست عزیزم میشه نمونه ای به من ارائه بدید؟

متشکرم....................

Arghavan_Reza
یک شنبه 19 خرداد 1387, 12:55 عصر
سلام
البته بستگی به کوئری شما دارد ولی معمولا با یک کوئری مناسب امکان پذیر است.
مشابه دستوراتی که در SQL query analyzer بکار می برید. در ADOQuery نیز می شود.

لاله86
یک شنبه 19 خرداد 1387, 13:29 عصر
اگه درست منظور شما رو فهمیده باشم من مثلا دو جدوول رو میخوام جوینت کنم و یه ای دی او کوری براش بزارم:
adoquery1.sql.add('SELECT t1.name, t1.lastname, t2.cod, t2.ghes, t2.tedad, FROM t1 INNER JOIN t2 ON t1.cod = t2.cod; )

delphiprog3000
یک شنبه 19 خرداد 1387, 17:30 عصر
با سلام از تمامی عزیزان متشکرم
ولی مشکل من:


اگه اینطور باشه نمایش فیلدهای آنها در Dbgrid به چه صورتی میشود؟
یعنی Dbgrid ما تابع چند کوری است؟
و چگونه تمامی فیلدهای هر کوری را به dbgrid پاس دهیم؟
با تشکر...........................

امیدوارم دوستان فهمیده باشند.......

کاملتر بگم . مگه هر dbgrid فیلد نداره . و هر field خاصیتی به نام Fieldname نداره.

خب حالا هنگام طراحی چجوری فیلدها رو به نتایج حاصل از جوین ارتباط داد؟

با تشکر.............

SYNDROME
یک شنبه 19 خرداد 1387, 20:11 عصر
خب حالا هنگام طراحی چجوری فیلدها رو به نتایج حاصل از جوین ارتباط داد؟

خوب دوست عزیز نتیجه Join هم یک DataSet است و همان نام فیلدها بر می گردد.
نام فیلدهایی را که در قسمت Select نوشته اید در dBGrdi اضافه کنید.
موفق باشید

delphiprog3000
سه شنبه 21 خرداد 1387, 09:06 صبح
با سلام.
تا به حال با لود کردن کوری به dbgrid و ارتباط column های دبیگرید به فیلدهای لود شده کوری ارتباط میدادم.

با نوشتن نام فیلدهای موجود در جداول بر روی فیلدهای دیبیگرید مشکل حل شد.

با تشکر از توجه همه دوستان..................

اصغر (پآچ)
سه شنبه 21 خرداد 1387, 11:47 صبح
سلام دوست من

من با AdoQuery که به چند تا جدول جوین شده اتصال داشت هنگام ویرایش یا اضافه کردن رکورد به اون مشکل داشتم که با توجه به راهنمایی دوست عزیزم Syndrome مشکلم حل شد.

مشکل من این بود که هنگام ویرایش پیغام می داد نمی تونه تو فیلد هایی که Allow Null رو از اونها گرفته بودم نمی تونه مقدار خالی درج کنه در صورتی که من اصلا با اون فیلد ها کاری نداشتم تا دوستم گفت از این روش استفاده کن:



ADOQuery.ProPerties['Unique Table'].Value := 'Tablename';


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

موفق و موید باشی