بازدید: ١٠١٨

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

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

فرض کنید می خواهید اختلاف بین دو تاریخ را محاسبه کنید. یک مثال ساده برای استفاده از این تابع، سیستم مدیریت کتابخانه می باشد که در آن لازم است تا اعضای کتابخانه کتابهای امانت گرفته شده را در صورتی که سرموعد تحویل ندهند برحسب تعداد روزهای دیرکرد، جریمه بپردازند. دو مقدار تاریخ مورد استفاده در این مثال، DueDate و DateReturned هستند. برای محاسبه اختلاف بین این دو تاریخ می توانیم از تابع DateDiff استفاده کنیم.

می توانیم از تابع DateDiff بعنوان یک کنترل محاسبه شده (کافی است یک علامت = در جلوی آن قرار دهیم و تابع را بعنوان control Source کادر متنی وارد کنیم) یا در درون یک ماژول VBA استفاده کنیم. در این مثال از آن بعنوان یک فرم پرس و جوی(query) اکسس استفاده کردیم.

 

DateDiff("interval", FirstDate, SecondDate)


 

همانطور که مشاهده می کنید، تابع دارای سه پارامتر است. پارامتر interval این امکان را به شما می دهد تا مشخص کنید که تابع تفاوت زمانی را برحسب چه مقداری برگرداند. بعنوان مثال برحسب روز، هفته یا سال. در مثال خودمان می خواهیم تعداد روزهای دیرکرد بازگشت یک کتاب را محاسبه کنیم. به همین دلیل d را بعنوان مقدار رشته ای وارد می کنیم( اگر هفته مد نظر ما بود ww و اگر سال موردنظر ما بود yyyy را وارد می کردیم). گزینه های دیگری نیز وجود دارند که عبارتند از: q بعنوان یک ربع، h ساعت و n دقیقه. پارامترهای FirstDate و SecondDate به دو تاریخی که اختلاف بین آنها محاسبه می شود، مربوط می شوند. در مثال ما، این تاریخها در فیلدهای DueDate و ReturnDate جدولی به نام inkLoan قرار دارند. بدین ترتیب تابع DateDiff ما بصورت زیر می شود:

 

DateDiff("d", DueDate, ReturnDate)

 

اگر برحسب اتفاق کتابی زودتر از موعد تحویل کتابخانه داده شد(به عبارتی دیگر تاریخ DueDate بعد از تاریخ ReturnDate باشد)، تابع مذکور اختلاف تاریخی را بصورت یک مقدار منفی برمی گرداند. در چنین حالتی به ترتیبی که برحسب آن دو پارامتر تاریخ وارد می شوند، اندازه مقدار اختلاف دو تابع مشخص می شوند. با کمک تابع DateDiff، مقدار اولین تاریخ از دومین مقدار تاریخ کسر می شود تا تفاوت تاریخی را که در پارامتر interval تعریف کردیم، برگردانیم.

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

 

اختلاف بین داده ها

شکل1: تابع DateDiff که در آخرین ستون سمت راست استفاده شده است.

 

برای سهولت در انجام کار از جدولی با تنها سه فیلد استفاده شده است(LoanID، DueDate و ReturnDate). اگرچه همانطور که می توانید مشاهده کنید، فرم پرس و جوی ما 4 ستون دارد. سه ستون اول حاوی فیلدهای جدول inkLoan هستند ولی ستون آخر در سمت راست، به هیچ فیلدی تعلق ندارد. در حقیقت یک مقدار محاسبه شده براساس تابع DateDiff است که در بالا ایجاد کردیم. برای استفاده از تابع در درون این فرم پرس و جو(Query)، تنها از یک نام مستعار برای آن ستون استفاده کردیم به عبارتی دیگرنامی که از آن برای مراجعه به ستون استفاه می کنیم(Difference). سپس از یک کالن (Colon) برای جداکردن نام مستعار از تابع DateDiff استفاده می کنیم.

مسئله مهم قابل ذکر نحوه مراجعه تابع DateDiff به فیلدهای DueDate و ReturnDate جدول inkLoan است. فرم پرس و جوی(Query)ما بر اساس محاسبه DateDiff بر روی مقدار تاریخ موجود در رکورد relevant جدول LoanID است (به عبارتی دیگر مطابق با شرط گذاشته شده بر روی ستون LoanID می باشد). به نتیجه حاصله در شکل زیر دقت کنید:

 

تابع DateDiff

شکل 2: نتایج حاصله از فرم پرس و جو مورد استفاده از تابع DateDiff. نتیجه محاسبه DateDiff در آخرین ستون سمت راست، نمایش داده می شود. 

 

شرط فرم پرس و جوی ما، رکوردی را انتخاب کرده است که فیلد LoanID آن 42768205 می باشد. مقدار DuaDate برای این رکورد، 08/08/2011 و مقدار ReturnDate برابر با 12/08/2011 بود. تابع DateDiff ما، که در آخرین ستون و در سمت راست نمایش داده می شود، مقدار روزهای دیرکرد را 4 روز محاسبه کرده است.

 

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

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