PDA

View Full Version : سوال: نمایش جداول تو در تو در EHLibGrid



hadisalahi2
چهارشنبه 03 آذر 1389, 11:37 صبح
سلام.
من میخام در Ehlib Grid جداول تو در تو نمایش بدم.
توی مثال های خودش جند نمونه قرار داده ولی اونقدر پیچیدست که نتونستم سر در بیارم فقط فهمیدم باید با قسمت Row Panel , Row Panel Detail کار کنم.

اگه دوستان در این مورد راهنمایی کنند ممنون میشم.
یا حق

vcldeveloper
چهارشنبه 03 آذر 1389, 23:03 عصر
چیش پیچیده هست؟ Row Panel Detail را فعال می کنید، یه پنل بهتون میده. حالا توی این پنل می تونید هر کامپوننتی خواستید (من جمله EhGrid) قرار بدید. اینطوری میشه جدول تو در تو.

hadisalahi2
پنج شنبه 04 آذر 1389, 10:43 صبح
با سلام و تشکر

منظور من اینه که با باز کردن یک سطر ، رکوردهای متناظر با مقدار فیلد کلید از جدول دوم هم نمایش داده بشه.
به قول معروف همون Master/Detail خودمون

میخاستم بدونم آیا واسه این کار تنظیمات خاصی داره یا باید کد نویسی کرد.

در ضمن اون قسمت Row Panel واسه چه کاریه؟

یا حق

vcldeveloper
پنج شنبه 04 آذر 1389, 17:26 عصر
منظور من اینه که با باز کردن یک سطر ، رکوردهای متناظر با مقدار فیلد کلید از جدول دوم هم نمایش داده بشه.
به قول معروف همون Master/Detail خودمون
DbGridEh فقط نمایش دهنده هست. شما اگر Master\Detail میخواید، باید خودتان آن را در دیتاست هایتان تنظیم کنید. DBGridEh هم وقتی دیتاست ها را نمایش بده، همان چیزی که بر اساس رابطه Master\Detail در دیتاست ها تنظیم کردید را نمایش میده.

hadisalahi2
پنج شنبه 04 آذر 1389, 18:01 عصر
شرمنده میشه روش تنظیم Data Set ها رو برای این کار بگید چون من تا حالا با این مدل جداول کار نکردم

vcldeveloper
پنج شنبه 04 آذر 1389, 23:51 عصر
اول برای جدول Detail، خصوصیت MasterSource را بر روی DataSource متصل به جدول Master تنظیم می کنید. سپس برای جدول Detail با استفاده از خصوصیت MasterField، ارتباط بین فیلد مربوطه در جدول Master را با فیلد متناظرش در جدول Detail برقرار می کنید.

hadisalahi2
جمعه 05 آذر 1389, 11:30 صبح
با سلام و تشکر من از ADOQuery استفاده میکنم و توی این کامپوننت همچین خاصیتی وجود نداره.

vcldeveloper
جمعه 05 آذر 1389, 22:56 عصر
برای AdoQuery باید بعد از تعیین MasterSource، در کوئری Detail، یک پارامتر هم نام فیلد مورد نظرتان در کوئری Master تعریف کنید. در هنگام تغییر رکورد جاری در کوئری Master، مقدار اون فیلد به عنوان پارامتر برای Detail ارسال میشه، و Detail با اون پارامتر اجرا میشه.

hadisalahi2
شنبه 06 آذر 1389, 09:51 صبح
منظورتون اینه که دستور SQL رو در جدول Detail با مقدار فیلد کلید جدول Master اجرا کنم؟
در ضمن این کوئری رو در رویداد OnRowDetailPanelShow اجرا کنم؟

vcldeveloper
شنبه 06 آذر 1389, 15:37 عصر
منظورتون اینه که دستور SQL رو در جدول Detail با مقدار فیلد کلید جدول Master اجرا کنم؟
شما برای Detail یک کوئری دارید. در اون کوئری باید در بخش WHERE یک شرط بزارید. مقدار شرط رو باید از طریق پارامتر بهش بدید. اسم پارامتر شما باید اسم فیلد مربوطه در جدول Master باشه، مثلا:

SELECT * FROM MyTable WHERE MyField = :MyMasterField

حالا اگر در جدول Master فیلدی با نام MyMasterField داشته باشید، رابطه Master\Detail برقرار میشه.


در ضمن این کوئری رو در رویداد OnRowDetailPanelShow اجرا کنم؟
لازم نیست شما اجراش کنید. هر زمان که روی رکوردهای Master حرکت کنید، دلفی خودش کوئری مربوط به Detail را اجرا میکنه. در Help دلفی هم باید این توضیحات با مثال اومده باشه.

hadisalahi2
یک شنبه 07 آذر 1389, 11:18 صبح
شما برای Detail یک کوئری دارید. در اون کوئری باید در بخش WHERE یک شرط بزارید. مقدار شرط رو باید از طریق پارامتر بهش بدید. اسم پارامتر شما باید اسم فیلد مربوطه در جدول Master باشه، مثلا:

SELECT * FROM MyTable WHERE MyField = :MyMasterField

این دستورات رو کجا باید قرار بدم؟

در ضمن من در هر دو تا جدول یمک فیلد با نام ID دارم ولی وقتی که دستور
SELECT * FROM SignEXDetailTable Where ID=:ID
رو مینویسم کار خاصی انجام نمیده

vcldeveloper
دوشنبه 08 آذر 1389, 00:02 صبح
این دستورات رو کجا باید قرار بدم؟
پس مشکل تون کلی تر از بحث EhLib هست. لطفا یک تاپیک جدید در تالار بانک های اطلاعاتی در دلفی ایجاد کنید، با عنوان "ایجاد رابطه Master\Details با استفاده از AdoQuery". اینطوری روند تاپیک از مشکل با EhLib رسید به این که اصلا چطور رابطه Master\Detail ایجاد کنیم، یا چطور یک کوئری بنویسم.