تابع () DMAX در اکسس و نحوه کار با آن
تابع () DMAX یکی از توابع دخلی در نرم افزار اکسس می باشد .
این تابع در زیر گروه توابعی تحت عنوان Aggregation Function قرار دارند .
البته در گذشته ما در خصوص این نوع از توابع در این سایت مطلب تحت عنوان آشنایی با توابع Aggregation مطلبی را قرار دادیم و در آنجا به تفصیل در خصوص این توابع صحبت کردیم .
توابعی که در این گروه قرار می گیرند همگی با حرف D شروع می شوند .
کلمه D اشاره به Domain Aggregation دارد .
حالا فارغ از اینکه این عبارت ها و اصطلاحات به چه معنا و مفهومی میباشد ما امروز می خواهیم در خصوص تابع Dmax بطور اختصاصی صحبت نماییم .
اینکه این تابع از چه آرگومانهایی تشکیل شده ؟
و اینکه نحوه استفاده از آن را با یک مثال کاربردی بطور کامل تشریح کنیم .
پس با ما همراه باشید .
آشنایی با آرگومانهای تابع () DMAX
به تصویر زیر نگاه کنید .
این تصویر نمای کلی مربوط به تابع Dmax به همراه آرگومانهای آن را برای ما به نمایش می گذارد .
اول اجازه بدهید که با آرگومانهای این تابع آشنا شویم .
آرگومان اول Expr است .
Expr مخفف Expression است .
این آرگومان در واقع نام یک فیلد است که می خواهیم بالاترین مقدار مربوط به آن را به دست آوریم .
آرگومان دوم نام جدول یا کوئری است که فیلد مورد نظر ما که همان آرگومان اول است در داخل آن قرار دارد .
قسمت سوم هم که Criteria می باشد .
Criteria شرطی است که ما برای تابع در نظر می گیریم .
اینجا یک نکته مهم وجود دارد .
ما در این تابع ۳ آرگومان داریم اما فقط آرگومان آخر ما که همان Criteria باشد در داخل [ ] قرار گرفته است .
این به این معنی است که وجود آرگومان Criteria در ساختار این تابع کاملا اختیاری است .
یعنی با بودن شرط در ساختار تابع ، این تابع آن را در نظر خواهد گرفت و با توجه به شرط داده شده به تابع خروجی مورد نظر را به ما می دهد .
اما اگر شرطی هم به تابع ندهیم تابع با استفاده از دو آرگومان اول خود به ما خروجی خواهد داد .
پس چه در این تابع و چه در سایر توابع در نرم افزار اکسس به خاطر داشته باشید هر کدام از آرگومانهای تابع درون یک قلاب یا همان [ ] وجودشان برای ادامه کار آن تابع ضروری و حیاتی نیست و اکسس هم به شما ایرادی نمی گیرد .
اما سایر آرگومانهایی که بدون قلاب هستند را حتما باید برای تابع تعریف کنید تا آن تابع بتواند کار خود را انجام دهد .
خوب تا به اینجا قسمت تئوری ماجرا بود .
اجازه بدهید همه آنچه را که تا به اینجا گفتیم را در قالب یک پروژه کاملا اجرایی دنبال کنیم تا بهتر با زیر و بم کار با این تابع آشنا شویم .
یک مطلب خواندنی : 4 تابع کاربردی در اکسس که باید کار با آنها را یاد بگیرید .
استفاده از تابع () DMAX در یک پروژه عملی
خوب در این قسمت می خواهیم بصورت عملی با کاربرد این تابع در محیط اکسس آشنا شویم .
برای شروع کار به این تصویر زیر نگاه کنید .
ما در این تصویر یک جدول داریم مربوط به لیست چند عنوان کتاب.
تصویر زیر هم همان جدول را در نمای طراحی به ما نمایش می دهد .
یک فرم هم از این جدول تهیه می کنیم.
تا به اینجای کار که چیز خاص و جدیدی نیست .
اما کاری که می خواهیم انجام بدهیم چیست ؟
کاری که می خواهیم بکنیم در جهت رفع یک مشکل است .
مشکلی که خود من هم همیشه با آن مواجه بودم .
مشکل این بود که وقتی که فرم خود را باز می کردم تا اطلاعات مورد نظر برای کتاب جدید را وارد کنم نمی دانستم که آخرین کد کتابی که در جدول وجود دارد چه کدی است .
به همین خاطر مجبور می شدم که به سراغ جدول خودم بروم آن را باز کنم و بعد از کلی جستجو آخرین کد کتاب را پیدا کنم و در ادامه کد جدید را برای کتاب جدید ایجاد کنم .
کار مورد نظر این است که وقتی ما مشخصات مربوط به یک کتاب جدید را از طریق فرم درج می کنیم بلافاصله برنامه به ما آخرین شماره کتاب موجود در جدول را به ما نمایش بدهد .
و البته برای این کار نیازی به باز کردن جدول مربوطه هم نداشته باشیم .
این کار چه جوری انجام می دهیم .
خیلی ساده با استفاده از تابع Dmax .
و اما چگونه ؟
یک مثال عملی از تابع Dmax .
اول که یک تکس باکس به بالای فرم خودمون اضافه می کنیم .
اسم این تکس باکس رو هم txt-1 می گذاریم .
حالا یک راست به سراغ دکمه ای که بر روی فرم مشاهده می کنید می رویم .
در داخل رویداد On Click این دکمه می خواهیم کد نویسی کنیم .
هدف این است که بیشترین کد کتابی که در حال حاضر در داخل جدول ما وجود دارد را پیدا کنیم .
خوب برای این کار خیلی ساده می توانیم از تابع D max استفاده کنیم .
اما قبل از اینکه از خود تابع استفاده کنیم یک متغیر تعریف می کنیم .
این متــــغیـــــر قرار است که هر عددی را که تابع D max از جدول استخراج کرد را در خود ذخیره کند .
من این متغیر را به اسم myval نام گذاری کرده ام .
Dim myval As String ("myval = DMax("bookcode", "tblbooks
ما در تابع فوق از اکسس خواسته ایم که بالاترین عدد مربوط به فیلد bookcode را ز جدول tblbook استخراج کند .
خوب این تابع کار خود را انجام می دهد و یالاترین عدد مربوط به کد کتاب ها را از جدول استخراج و در متغیر myval ذخیره می کند .
حالا ما باید این مقدار را به کاربر نمایش دهیم .
برای این ار راهکارهای مختلفی در اختیار ما قرار داده شده است .
مثلا می توانیم برای نمایش این مقدار از یک مسیج باکس استفاده کنیم .
یا اینکه این مقدار را در داخب یک تکس باکس به کاربر نمایش دهیم .
خوب من راه دوم را انتخاب کرده ام .
برای این کار در ادامه همان کدها این قطعه کد را اضافه می کنم .
Me.txt_1 = myval
خوب با این کار آخرین شماره مربوط به کد کتابی که در این جدول ثبت شده به کاربر نمایش داده می شود .
و از این طریق به راحتی متوجه می شویم که آخرین کد کتاب موجود در جدول چه عددی است .
اما بیایید باز هم مساله را کمی چالشی تر کنیم .
دوباره به جدول لیست کتابها یک نگاهی بیاندازید .
ما در این جدول لیستی داریم تحت عنوان موضوع کتاب و هر کدام از کتابها را بر مبنای موضوع آنها طبقه بندی کرده ایم .
حال می خواهیم کتابهای هر موضوع خاص را بصورت مجزا شماره گذاری کنیم .
مثلا می خواهیم کتابهای با موضوع علمی همه از شماره ۱۰ شروع و در نهایت به شماره ۲۰ ختم شوند .
یا کتابهای داستانی از شماره ۱ شروع و در نهایت به شماره ۱۰ ختم شوند .
حالا یک کتاب جدید با موضوع علمی را می خواهیم وارد جدول خود کنیم .
خوب ما در اینجا می خواهیم بدانیم که آخرین شماره کتابی که با موضوع علمی در جدول ما ثبت شده است چه شماره ای است .
اگر بخواهیم از تابع Dmax در حالت قبل استفاده کنیم ما بالاترین شماره موجود در جدول را داریم .
که این آخرین شماره با توجه به جدول ما طبعا متعلق به کتابهای فلسفی خواهد بود .
اما برای پیدا کردن آخرین شماره کتاب با توجه به موضوعات کتابها ما می توانیم به سراغ بخش شرطی تابع خود برویم .
استفاده از شرط در تابع Dmax
در جدول ما نام فیلدی که موضوعات کتابها را در آن وارد می کنیم تحت عنوان Type نام گذاری شده است .
بر روی فرم ما هم یک کمبو باکس وجود دارد که نام آن را cbotype در نظر گرفته ایم و موضوعات کتابها را می توانیم از طریق آن انتخاب کنیم.
ما به زبان انسانی به نرم افزار می گوییم که :
” به موضوع انتخاب شده در cbotype بر روی فرم توجه کن .
با توجه به این موضوع بالاترین کد کتابی را که در جدول برای این موضوع درج شده است را برای من پیدا و آن را در داخل یک متغیر ذخیره کن .”
حالا همین کارها را به زبان برناه نویسی ترجمه و در اختیار برنامه قرار می دهیم .
ترجمه صحبت های فوق بصورت کدهای قابل فهم برای کامپثوتر به صورت زیر خواهد بود .
myval = DMax("bookcode", "tblbooks", "type='" & Me.cbotype.Value & "'")
و در آخر هم که می توانیم بگوییم که با این بالاترین کد مربوط به هر موضوع چه کند و آن را چگونه به کاربر نمایش بدهد .
مثلا من می خواهیم این الترین عدد مر بوط به هر موضوع از کتابها را بصورت یک مسیج باکس به اطلاع کاربر برسانم .
پس از کد زیر استفاده می کنم .
خروجی و نتیجه نهایی کار هم شبیه تصویر زیر خواهد بود .
پس در این مطلب به خوبی توانستیم به نحوه کار با تابع () DMAX در محیط اکسس آشنا شویم و با نحوه کاربرد این تابع در محیط اکسس با استفاده از مثالهایی که بررسی کردیم آشنا شدیم .
اگر که این مطلب برای شما مفید بود و یا سوالی در خصوص کار با این تابع دارید می توانید در قسمت نظرات در پایین همین مطلب نظر و یا سوال خود را درج کنید .
مطالب زیر را حتما مطالعه کنید
ساخت برچسب در اکسس💥چطور آنها را ایجاد و مدیریت کنیم ؟
ریبون ها در اکسس💥از مخفی کردن تا مدیریت کردن آنها
چطوری متن ها و تصاویر را بصورت متحرک در اکسس نمایش بدهیم ؟
فرمت دهی نوشته ها در اکسس | کاربرد + مثالها
۵ ویژگی در فرم های اکسس که کمتر از آنها خبر داشتید .
باز کردن گزارش اکسس برای یک رکورد مشخص + نمونه فایل
1 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
سلام
اگر بخواهیم در جدول کوئری در قسمت کریتریا فرمولی بنویسیم که مقدارهای بزرگتراز مثلا n+1 رو به ما نمایش بده چطوری باید فرمول بنویسیم