PDA

View Full Version : آموزش: چگونه تابع دلخواه برای استفاده در اکسس تعریف کنیم



Rasool-GH
پنج شنبه 01 دی 1390, 16:35 عصر
با اجازه اساتید
برای ایجاد امکانی دلخواه که در اکسس موجود نیست (جزو توابع اکسس نیست) شما ناچار به تعریف کردن یک تابع در برنامه هستید که به روش زیر امکان پذیر است

وارد محیط VBA شده و از نوار ابزار Module رو انتخاب کنید . داخل محیط سفید رنگ تابع را به صورت زیر تعریف کنید

Function GMin(R, S, T) As Integer
.
.
.
.
End Function

همین طور که مشاهده میکنید کد بالا اعلام میکند که یک تابع (Function ) با نام (GMin) تعریف شده است که 3 مقدار (R, S, T) دریافت میکند و حاصل را مطابق شروط داخل تابع باز میگرداند . این تابع از نوع عددی میباشد (As Integer) یعنی مقادیر ورودی و خروجی عدد میباشند . در خاتمه (End Function) پایان تابع رو مشخص میکند

Function GMin(R, S, T) As Integer
GMin = Nz(R, 0)
If S < GMin Then GMin = Nz(S, 0)
If T < GMin Then GMin = Nz(T, 0)
End Function

شروط داخل تابع مقدار کوچکترین عدد بین اعداد ورودی را تعیین نموده و به برنامه باز میگرداند
"توضیح اینکه:"
" تابع (Nz(R, 0 برای جلوگیری از بروز خطا در محاسبات استفاده شده است و عملکرد ان به این صورت است که در صورتی که مقدار متغیر خالی یا نامشخص باشد عدد 0 (یا هر عدد یا مقدار دلخواه) را باز میگرداند و اگر خالی نبود مقدار خود متغیر بازگردانده میشود "

"تابع IF از شما یک شرط رو برسی میکنه در صورت درست بودن شرط عمل مشخص شده بعد از Then رو اجرا میکن "
در این تابع (GMin(R, S, T گفته شده
مقدار R را در قرار بده .
اگر S کوچکتر از GMin بود GMin را برابر S قرار بده .
اگر T کوچکتر از GMin بود GMin را برابر T قرار بده .

Abbas Amiri
پنج شنبه 01 دی 1390, 17:30 عصر
البته نکته ای که وجود دارد اینست که معمولا برای آرگومانهای ارسالی به تابع یا پروسیجر معمولا نوع داده را نیز مشخص می کنند.مثلا در تابع بالا
(R As Integer, S As Integer, T As Integer)طول متغیر نوع Integer دو بایت است چنانچه نوع متغیرمشخص نشود کامپایلر بصورت پیش فرض آنرا Variant ویا Object (با طول 8 بایت) درنظر میگیرد
حسن اینکار جدای اینکه باعث مصرف کمتر منابع حافظه سیستم می شودفراخوان کننده تابع نوع داده ای که باید ارسال کند را متوجه میشود (با توجه به خاصیت Auto List Member محیط VBA)
در اینجا احتمالابرای نویسنده تابع نوع داده ارسالی مشخص نبوده ویا متغیر بوده است بهر حال با توجه به موارد ذکر شده در صورت درج نوع آرکومان ، در زمان صدا زدن آن میتوان نوشت ((MyVar=GMin(Int(Arg1), Int(Arg2), Int(Arg3

Rasool-GH
پنج شنبه 01 دی 1390, 19:29 عصر
ممنون از جناب اقای امیری که با این دقت و حساسیت به مطلب توجه کردن و کمبودها رو جبران کردن و بنده چیزی که در توان خودم بود رو ارائه کردم

البته این حرکت من جسارت بود خدمت بزرگان ولی چون دیدم خیلی از دوستان در این موارد دچار مشکل هستن فکر کردم این توضیحات به درد بخوره