بازدید: ٧٠۴

استفاده از فیلدهای محاسبه شده در فرم های پرس و جو (Queries) (آموزش پیشرفته اکسس)

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

 

فرم های پرس و جو قسمت مهمی ( در طرح بانک اطلاعاتی رابطه ای )در پرکردن اطلاعات از جداول مختلف محسوب می شوند. یک ارتباط چند به چند را در مرکز یک سیستم مدیریت سفارش در نظر بگیرید. در اینجا ما سه تا جدول داریم (Orders، Order Details و Products). هنگامی که می خواهیم منبع رکورد را برای قسمت order items گزارش صورتحساب ایجاد می کنیم، باید داده ها را صرفنظر از تعداد (quantity) آیتمهای سفارش، از جدول Order Details و هزینه هر واحد (cost per unit)  را از Products Table بگیریم. همچنین یک OrderId در جدول Orders وجود دارد که تمامی رکوردهای Order Details را تنها در یک سفارش گروه بندی می کند. 

 

فیلدهای محاسبه شده

شکل1: یک مثال ساده از ارتباط چند به چند در بانک اطلاعاتی Order Management.

 

گزارش صورتحساب

شکل 2: یک گزارش صورتحساب که از یکی از طرح های بانک اطلاعاتی Order Management گرفته شده است. قسمت Order Items در وسط گزارش قرار دارد. قسمت CostPerUnit در اینجا بعنوان Unit Cost و نیز Amount بعنوان Total نمایش داده می شود.این قسمت حاوی جزییات مربوط به هر سفارش می باشد که با یکدیگر گرفته شده اند و کل سفارش را ایجاد می کنند. 

 

علاوه بر جمع آوری اطلاعات به این روش، فرم پرس و جو (Query) نیز نقش مهمی در محاسبه و فرآوری اطلاعات از این جداول را بازی می کند. اینکار ممکن است با استفاده از یک فیلد محاسبه شده انجام شود. این ستون، یک ستون از فرم پرس و جوی(Query) جدید می باشد که مقادیر موجود در آن از برخی مقادیر محاسبه شده بدست می آید. علاوه بر آن ما داده های جدیدی را برای بانک اطلاعاتی خود ایجاد می کنیم. حال چرا این مسئله مهم است؟ لازم است که به صورتحساب Order Management Database بالا نگاه کنید. همانطور که مشاهده می کنید، جدول Order Details حاوی داده هایی می باشد که به تعداد آیتم های یک سفارش(Quantity) مربوط می شود و جدول Products نیز داده هایی دارد که به  آیتمهای Cost Per Unit (قیمت هر عدد) مربوط می شود. هیچ بانک اطلاعاتی پیدا نمی کنید که مقدار کلی (quantity*Cost Per Unit) در آن ذخیره شود. استفاده از فیلد Calculated (محاسبه شده ) در یک فرم پرس و جو روش متداولی برای انجام اینکار است.

ایجاد یک فیلد محاسبه شده بسیار آسان است. به جای اینکه فیلدی را از سطر بالای یک قسمت طراحی فرم پرس و جو انتخاب کنید، بصورت دستی نام آن را تایپ کرده سپس بعد از آن کاراکتر دو نقطه (:) را قرار دهید تا مقدار مورد محاسبه را در ادامه بنویسد. حال اگر می خواستیم یک فیلد محاسبه شده ایجاد کنیم تا مقدار Quantity*Cost Per Unit را محاسبه کند، باید از دستور زیر استفاده می کردیم:

 

Amount: [Quantity]*[CostPerUnit]

 

لازم به ذکر است که نام انتخاب شده Amount در اینجا کاملا اختیاری است. با این وجود توصیه می شود که همیشه از کلمات و عبارات با معنی استفاده کنید تا درک و فهم آن در آینده برای شما آسان باشد. 

 

فیلد محاسبه شده

شکل3: فرم پرس و جو(query) به همراه فیلد محاسبه شده (calculated) در سمت راست آن. 

 

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

 

[tblOrderDetails].[Quantity] 

 

این دستور به فیلد Quantity از جدول tblOrderDetails مراجعه می کند

 

 [tblProducts].[CostPerUnit] 

 

این دستور به فیلد CostPerUnit از جدول tblProducts مراجعه می کند.

 

اگر جدول یا فرم پرس و جویی (Query) که در این محاسبه استفاده می شود، اسامی فیلدهای آنها مشابه است، بهتر است محل رجوع آنها را بطور کامل بنویسید. اگرچه این مثال اینگونه نیست. با این وجود بهتر است دستور آن بطور کامل نوشته شود.

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

 

خروجی query

شکل 4: خروجی فرم پرس  جو(Query).

 

از آنجایی که این فرم پرس و جو دارای فیلدی به نام ID است که متناظر با tblOrder.OrderId می باشد، می تواند بعنوان منبع رکورد قسمت Order Items گزارش صورتحساب  و یا فرم Order استفاده شود. برای این منظور خصوصیت LINK MASTER FIELDS سابفرم بر روی ID و نیز LINK CHILD FIELDS بر روی OrderId تنظیم می شود. 

 

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

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