بازدید: ١٩٩٠

پیوند خارجی در فرم پرس و جو (Query) (آموزش پیشرفته اکسس)

بازگشت به صفحه اصلی آموزش پیشرفته اکسس

 

در این پست به نحوه ایجاد یک پیوند خارجی در فرم پرس و جو (Query) می پردازیم. ابتدا نگاهی می اندازیم به تفاوت بین پیوند داخلی و خارجی در فرم پرس و جو.

معمولا پیوندهای فرم پرس و جو دو یا چند جدول را به یکدیگر متصل می کنند به گونه ای که نتایج حاصله از فرم پرس و جو، داده ها را به گونه ای نشان می دهند که شبیه به یک جدول واحد به نظر می رسند. اینکار به یک شکل منسجم انجام می شود که بموجب آن رکوردهای نظیر جداول به گونه ای نمایش داده می شوند که هر سطر از داده ها با نتایج فرم پرس و جو مطابقت داشته باشد. در پست قبلی که در زمینه پیوند داخلی بود ما از یک جدول Customer و یک جدول Order برای ایجاد یک سطر از داده ها استفاده کردیم تا نام یک مشتری را به همراه سفارش آن نمایش دهیم. برای اینکه یک رکورد در نتایج فرم پرس و جو (query) ظاهر شود، در پیوند داخلی نیاز بود تا هریک از مشتریان (در جدول tblCustomer) حداقل یک سفارش  (در جدول tblOrder) داشته باشند و یا برعکس. همین نکته تفاوت بین فرم های پرس و جو پیوند داخلی و خارجی را نشان می دهد.

بعنوان مثال فرض کنید تعدادی مشتری دارید که هیچ سفارشی در جدول سفارشات ندارند (مثلا سفارشات بطور تصادفی حذف شده اند). اگر یک فرم پرس و جود با پیوند داخلی ایجاد کنیم، مشتریانی که دارای رکوردهای سفارش نیستند، در نتایج حاصله، نمایش داده نمی شوند ولی اگر یک فرم پرس و جو با پیوند خارجی سمت چپ ایجاد کنیم، تمامی مشتریان صرف نظر از اینکه آیا آنها رکوردهایی در جدول سفارشات داشته باشند یا خیر، نمایش داده می شوند. اگر مشتری هیچ سفارشی نداشته باشد، سطر نتایج فرم پرس و جوی وی تنها حاوی جزییات مشتری می باشد که دارای در قسمت سفارشات فیلدهای آنها خالی است.

در پیوند خارجی باید مشخص کنیم که پیوند ما سمت راست است یا چپ. با انتخاب سمت چپ یا راست، مشخص می کنیم که کدام جدول در پیوند باید تمامی سطرهای آن مطابق با شرط ارائه شده باشد و کدام سمت تنها داده های نظیر آن با جدول انتخابی نمایش داده شود.

اکنون می خواهیم یک فرم پرس و جوی با پیوند خارجی ایجاد کنیم. مثال ما از دوجدول استفاده می کند (tblCustomer و tblOrder). می خواهیم از فیلدهای FIRSTNAME و SURNAME و CITY جدول مشتریان و ITEMORDERED و DATE جدول سفارشات استفاده کنیم. شرط ما برای فیلنر کردن داده های جدول، نمایش تمام مشتریانی است که در شهر Bolton زندگی می کنند. می توانید جداول مربوطه را از اینجا دانلود کنید.

 

پیوند خارجی در اکسس

 داده های مربوط به جدول tblCustomer

 

پیوند خارجی در اکسس

 داده های مربوط به جدول tblOrder

یک ارتباط یک به چند بین دوجدول tblCustomer.ID و tblOrder.CustomerId وجود دارد.

 

نحوه ایجاد یک فرم پرس و جو (Query) پیوند خارجی

 

اینکار را در دو مرحله انجام می دهیم. مرحله اول ایجاد یک فرم پرس و جو با پیوند داخلی استاندارد است که با استفاده از جدول طراحی فرم پرس و جوی اکسس انجام می دهیم.  مرحله دوم تغییر فرم پرس و جو است به گونه ای که به یک فرم پرس و جو با پیوند خارجی تبدیل شود.

 

مرحله اول: ایجاد یک فرم پرس و جو پیوند داخلی

 

  1. بانک اطلاعاتی دانلود شده را باز کنید.
  2. برگه Create را از نوار ابزار اکسس انتخاب کنید.
  3. برروی آیکون Query Design در گروه OTHER کلیک کنید.
  4. در کادرمکالمه SHOW TABLE، جدولهای tblCustomer وtblOrder را انتخاب کنید. سپس کادرمکالمه را ببندید. اکنون هردو جدول در قسمت بالای QUERY DESIGN GRID نمایش داده می شوند. از آنجایی که یک ارتباط یک به چند بین دو جدول وجود دارد، در قسمت QUERY DESIGN GRID بصورت یک پیوند داخلی نمایش داده می شود.
  5. فیلدهای FirstName، Surname و City را از جدول tblCustomer انتخاب کنید. سپس فیلدهای ItemOrdered و Date را از جدول tblOrder انتخاب کنید.
  6. اکنون شرط “Bolton” را در سطر CRITERIA از ستون CITY که در قسمت پایین جدول طراحی فرم پرس و جو قرار دارد، وارد کنید.

اکنون فرم پرس و جوی شما باید شبیه به شکل زیر به نظر برسد:

 

پیوند خارجی در اکسس

 

اکنون اگر فرم پرس و جو را اجرا کنید (قبل از تغییر آن به فرم پرس و جوی پیوند خارجی)، باید نتایج زیر حاصل شوند:

 

پیوند خارجی در اکسس

 فرم پرس و جو قبل از تغییر بصورت یک پیوند داخلی اجرا می شود.

 

اگر توجه داشته باشید با وجود آنکه در جدول مشتری دورکورد در شهر Bolton وجود دارند، ولی تنها یک رکورد نمایش داده شده است. زیرا ما فرم پرس و جو را بعنوان یک پیوند داخلی اجرا کردیم و رکوردی که نمایش داده نشده، هیچ سفارشی در جدول tblOrder ندارد.

حال اجازه دهید ببینیم اگر فرم پرس و جو را به نوع پیوند خارجی تغییر دهیم چه اتفاقی رخ می دهد:

 

مرحله دوم: تغییر فرم پرس و جو به یک پیوند خارجی

 

  1. فرم پرس و جوی پیوند داخلی را که تازه در نمای DESIGN VIEW ایجاد کردیم، باز کنید. باید صفحه QUERY DESIGN GRID باز شود.
  2. برروی پیوند بین دو جدول کلیک کنید تا کادر مکالمه JOIN PROPERTIES را باز کنید.

 

پیوند خارجی در اکسس

کادرمکالمه JOIN PROPERTIES.

 

3. اگر توجه کنید متوجه می شوید که کادرمکالمه Join Properties نام جدول سمت چپ را tblCustomer و نام جدول سمت راست را tblOrder گذاشته است. اکنون می خواهیم تمام مشتریانی که مطابق با شرایط ما هستند صرفنظر از اینکه رکوردی متناظر در جدول سفارشات داشته باشند یا خیر نمایش داده شوند. همانطور که مشاهده کردید جدول tblCustomer در جدول سمت چپ کادر JOIN PROPERTIES نمایش داده شده است. اکنون باید فرم پرس و جوی خود را به پیوند خارجی سمت چپ تغییر دهیم. برای این منظور باید بر روی Option Two کلیک کنیم تا بدین طریق تمامی رکوردهای جدول tblCustomer و نیز رکوردهایی از جدول tblOrder که فیلدهای پیوند داده شده آنها مساوی هستند را نمایش دهد.

4. در کادرمکالمه JOIN PROPERTIES بر روی Option 2 کلیک کنید. سپس بر روی OK کلیک کنید.

اکنون پیوند خارجی سمت چپ ایجاد شده است. در صفحه طراحی Query Design Grid به صورت زیر نمایش داده می شود.

 

پیوند خارجی در اکسس

نمایش پیوند سمت چپ در پنجره طراحی Query.

 

اکنون به خط پیوند دو جدول که دارای یک فلش است توجه کنید. این فلش از سمت چپ به سمت راست اشاره دارد یعنی از سمت tblCustomer به سمت tblOrder. فرم پرس و جوی ما تمامی رکوردهای موجود در جدول tblCustomer را نمایش می دهد (مطابق با شرط Bolton و نیز سفارشات مربوط به مشتریانی که مطابق با این شرط می باشند). اکنون می خواهیم فرم پرس و جو را اجرا کنیم.

 

پیوند خارجی در اکسس

نتایج حاصل از فرم پرس و جوی پیوند خارجی سمت چپ که تغییر داده شده اند.

 

اکنون هردو مشتری که در شهر Bolton هستند نمایش داده می شوند. همانطور که مشاهده می کنید، رکورد Andrew Johnson هیچ رکوردی در جدول سفارشات ندارد. دفعه بعدی که فرم پرس و جو را اجرا کردیم، این مشتری در نتایج نمایش داده نشد. بعداز آنکه فرم پرس و جو را به فرم پرس و جوی پیوند خارجی سمت چپ تغییر دادیم، رکورد این مشتری نیز نمایش داده شد.

اکنون فرض کنید شرط را از این فرم پرس وجو حذف کنیم و یک سفارش جدید در جدول tblOrder بدون آنکه یک رکورد مشتری برای آن وجود داشته باشد، اضافه کنیم. در این صورت مشاهده خواهید کرد که تمامی مشتریان به همراه سفارشات آنها نمایش داده می شوند. با این وجود، رکورد سفارش جدید نیز در نتایج فرم پرس وجو نمایش داده نمی شوند. حال اگر پیوند این فرم پرس وجو را به یک پیوند خارجی سمت راست تغییر دهیم چه اتفاقی رخ می دهد؟

  1. پنجره QUERY DESIGN را باز کنید.
  2. بر روی خط پیوند موجود بین جداول کلیک کنید تا کادرمکالمه JOIN PROPERTIES را باز کنید.
  3. اکنون Option Three را انتخاب کنید. در این حالت تمامی رکوردهای موجود در جدول tblOrder و سفارشات جدول tblCustomer که فیلدهای پیوند آنها مساوی هستند نمایش داده می شوند.

اینکار باعث می شود تا فرم پرس و جوی ما را به یک پیوند خارجی سمت راست تغییر دهد. اکنون فرم پرس و جو را اجرا کنید.

 

پیوند خارجی در اکسس

نتایج فرم پرس و جو از یک پیوند خارجی سمت راست

 

اکنون رکورد سفارش جدید در نتایج ظاهر می شود در حالیکه رکورد آن مشتری که سفارش ندارد نمایش داده نمی شود. این تفاوت فرم پرس و جو پیوند خارجی سمت راست و سمت چپ را نشان می دهد.

.

بازگشت به صفحه اصلی آموزش پیشرفته اکسس

طراحی سایت و سئو توسط ضابط