نمایش نتایج 1 تا 4 از 4

نام تاپیک: "ایجاد رابطه Master\Details با استفاده از AdoQuery

  1. #1

    "ایجاد رابطه Master\Details با استفاده از AdoQuery

    سلام به همگی دوستان.
    من میخام یک رابطه Master\Details با استفاده از AdoQuery ایجاد کنم به طوری که با کلیک بر روی یک سطر از گریدی که به جدول Master وصله رکوردهای متناضر اون از جدول Detail نمایش داده بشه.
    ممنون میشم از دوستان اگه راهنمایی کنند
    یا حق

  2. #2

    نقل قول: "ایجاد رابطه Master\Details با استفاده از AdoQuery

    دو شی AdoQuery یا AdoDataset به پروژه تان اضافه کنید. دو DataSource هم به پروژه اضافه کنید، و خصوصیت Dataset آنها را به ترتیب بر روی AdoQuery اول و دوم تنظیم کنید.
    دستور SQL مربوط به داده Master را برای شی AdoQuery اول بنویسید.
    برای AdoQuery دوم، ابتدا خصوصیت DataSource آن را بر روی DataSource متصل به داده Master تنظیم کنید. سپس در خصوصیت SQL آن دستور SQL مربوط به داده Detail را بنویسید.
    در انتهای دستور SQL مربوط به Detail، یک گزاره WHERE اضافه کنید که حاوی شرط مربوط به رابطه Master\Detail باشه. برای این منظور، باید از پارامتری استفاده کنید که هم نام یکی از فیلدهای موجود در داده Master باشه، مثلا اگر داده Master شما حاوی داده های مشتریان هست، و فیلد کلید آن CustomerID هست؛ و داده Detail شما مربوط به سفارشات هر مشتری هست، و در آن فیلدی با نام CustID برای مشخص کردن مشتری هر سفارش وجود داره، باید در دستور SQL خودتان پارامتری هم نام فیلد CustomerID تعریف کنید، و در گزاره WHERE از آن استفاده کنید. در این صورت، کوئری Master و Detail فرضی شما به شکل زیر میشه:

    /// Master
    SELECT * FROM Customers

    /// Detail
    SELECT * FROM Orders WHERE CustID = :CustomerID


    حالا می تونید کوئری Master و Detail را Active کنید. هر زمان که رکورد جاری در Master تغییر کنه، مقدار CustomerID رکورد جاری از Master خوانده میشه، و به پارامتر CustomerID در کوئری Detail اختصاص داده میشه، و کوئری Detail اجرا میشه، تا داده های متناسب با مقدار همون پارامتر را برگشت بده. به این ترتیب، در مثالی که زده شد، شما در کوئری Master لیست مشتریان را دارید، و در کوئری Detail لیست سفارشات مشتری انتخاب شده در Master را.

    اگر میخواید این داده ها را در گرید نمایش بدید، دو گرید به فرم اضافه می کنید، خصوصیت DataSource یکی را بر روی DataSource متصل به Master تنظیم می کنید، و خصوصیت DataSource آن یکی را بر روی DataSource متصل به Detail.


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  3. #3
    کاربر جدید
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    شیراز
    پست
    9

    Unhappy نقل قول: "ایجاد رابطه Master\Details با استفاده از AdoQuery

    سلام
    طبق راهنمائیتان از مستر دیتیل استفاده کردم و الان متوجه شدم منظورتان چیست.اما این آن چیزی نیست که می خواهم.من می خوام یک جدول داشته باشم که با انتخاب یک فیلد آن از لیست بتوانم فیلد های دیگرش را بازیابی کنم و یا عملیاتی بر روی فیلد های دیگرش انجام دهم.برای این منظور چه راهی پیشنهاد می کنید؟

    پیشا پیش از لطفتون ممنون

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    شهریور 1384
    محل زندگی
    اهواز
    سن
    39
    پست
    31

    Smile پاسخ به: "نقل قول: "ایجاد رابطه Master\Details با استفاده از AdoQuery"

    سلام
    شاید خیلی دیر باشه اما بالاخره به جواب دادنش شاید بی ارزه برای دیگران:
    این مطلبی که شما خواستید، ربطی به M/D کردن دو جدول یا کوئری نداره.

    شما می خواهید داده های یک رکورد را موردی ببینید.
    می تونید ADOTable/ADOQuery مورد نظرتون رو ایجاد کنید، یک Datasourse به اون وصل کنید بعد در فرم تون
    دوتا گرید بگذارید و هر دو رو به اون datasourse متصل کنید. اما
    در گرید اول فقط فیلد خاص رو بگذارید و در گرید دوم باقی فیلدهایی که می خواهید نمایش داده شوند.
    با این شرایط وقتی رو فیلد گرید1 کلیک می کنید، باقی اطلاعات در گرید2 مربوط به همان رکورد نمایش داده می شوند.

    امیدوار به درد کسانیکه این مطلب رو می خونند، بخورد.

    شادباشید

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •