۷ تابع کاربردی برای اعتبار سنجی داده ها در VBA
سلام خوشحالم که اینجا هستید و مشغول خواندن این مطلب. نمی دانم که از کجا و از چه طریقی سایت سافت پلاس و خصوصا این مطلب رو انتخاب کردید.
آموزش امروز ما به نرم افزار اکسس و البته اگر دقیق تر بگویم به محیط برنامه نویسی اکسس اختصاص خواهد داشت . می خواهم با هم کمی در مورد اعتبار سنجی داده ها در VBA باهم صحبت کنیم .
با اصطلاحی تحت عنوان اعتبار سنجی که آشنایی دارید .آن چیزی که ما از آن در زبان فارسی تحت عنوان اعتبار سنجی اسم می بریم در دنیای اکسس از آن تحت عنوان Validation Rule اسم می برند .
پس هر موقع و در هر جا که به این اصطلاحی به نام Validation Rule مواجه شدید به خوبی می دانید که منظور همان اعتبار سنجی است .
اما منظور از خود کلمه اعتبار سنجی چیست ؟ یا اجازه بده که اینطور بپرسم که عبارت اعتبار سنجی اشاره به چه مفهومی می کند؟
خوب ما در اکسس با چه چیزی سرو کار داریم ؟ درست است داده ها یا همان چیزی که از آن تحت عنوان Data اسم می بریم . من یا شما داده ها را وارد نرم افزار اکسس خود میکنیم .
یکی از دغدغه هایی که همیشه برای یک طراح بانک اطلاعاتی وجود داشته ؛ وجود دارد و در آینده هم وجود خواهد داشت این است که کاربر همان اطلاعاتی را وارد یک فرم یا جدول کند که برنامه انتظارش را دارد .
یعنی اگر در یک فرم تکس باکسی داشته باشیم که قرار است کاربر کد ملی خود را در آن وارد کند برای ما مهم است که کاربر فقط عدد و آن هم تا ۱۰ رقم را در این تکس باکس وارد کند .
یا اگر در یک تکس باکس از کاربر می خواهیم که اسم خود را وارد کند می خواهیم مطمئن شویم که کاربر از اعداد در این تکس باکس استفاده نکند .
خوب بنظر شما برای انجام این کارها چه باید کرد ؟ باید بالای سر کاربر بایستیم تا مطمئن شویم که همان اطلاعاتی را وارد می کند که ما می خواهیم . یا از کاربر خواهش و تمنا کنیم که همان چیزی را وارد کند که ما می خواهیم ؟
جواب هیچ کدام از این موارد نیست . جواب این سوال استفاده از اعتبار سنجی است . جواب این مساله همان Validation Rule است .
اما من که از مفهوم هر چیز صحبت کردم اجازه بدهید که کمی هم در خصوص مفهوم کلمه یا عبارت اعتبار سنجی با هم صحبت کنیم .
مفهوم اعتبار سنجی دقیقا در خود این عبارت نمایان است . اعتبار سنجی یعنی سنجش اعتبار چیزی و آن چیز در اینجا داده هایی است که قرار است از طرف کاربر وارد برنامه ما شود .
در واقع کاری که می خواهیم انجام دهیم این است که در بدو ورود اطلاعات به اکسس کنترل کنیم که آیا اطلاعاتی که کاربر در حال وارد کردن آنهاست از نظر ما معتبر هست یا نه ؟
اگر که معتبر بود اجازه ذخیره سازی این اطلاعات را صادر می کنیم اما اگر اشکالی در اطلاعات وجود داشت تصمیم مناسب را برای این اطلاعات گرفته و ان را برای کاربر اطلاع رسانی می کنیم .
این اعتبار سنجی داده ها در اکسس خود یک مبحث جداگانه است که من قبلا در این سایت طی یک مطلب جداگانه مفصل به آن پرداخته ام .
عین همین داستان را ما در برنامه نویسی VBA هم داریم . در برنامه نویسی هم خیلی از اطلاعات را ما از کاربران دریافت می کنیم .
می خواهیم به نحوه اعتبار سنجی داده ها در برنامه نویسی VBA بپردازیم . برای این کار هم از یکسری از توابع داخلی موجود در خود زبان برنامه نویسی وی بی ای استفاده خواهیم کرد .
این به نحوی یک تیر و دو نشان خواهد بود . هم با تعدادی از توابع داخلی برنامه نویسی آشنا می شویم و هم اینکه یاد خواهیم گرفت که چگونه اطلاعاتی را که در اختیار ما قرار می گیرد را اعتبار سنجی کنیم .
پس از شما دعوت می کنم که تا پایان این آموزش را دنبال کنید .
استفاده از توابع داخلی برای اعتبار سنجی متن ها
برای شروع کار فرم زیر را در نظر بگیرید .
ما در این فرم یک تکس باکس داریم که قرار است کاربر در این تکس باکس برای ما یک آدرس ایمیل را وارد کند .حالا می خواهیم به طریقی مطمئن شویم که کاربر آدرس ایمیل خود را بصورت صحیح در این کادر وارد کرده است.
برای این کار یک دکمه بر روی این فرم داریم که به محض کلیک کردن بر روی آن از برنامه می خواهیم که دو کار را برای ما انجام دهد .
اول اینکه کنترل کند که اطلاعات وارد شده در بخش های مختلف این فرم به درستی برای ما وارد شده است . دوم اینکه اگر این اطلاعات درست بود که اطلاعات مورد نظر را در برنامه ما ذخیره کند .
اما اگر به هر شکل ممکن این اطلاعات دارای نقصی بود آنگاه به کاربر اطلاع رسانی لازم را بکنیم تا این ایرادات برطرف شود . تمامی این کارها را با استفاده از کدهای وی بی ای انجام خواهیم داد .
۱- اطمینان از ورود آدرس ایمیل در کادر مربوطه
در قدم اول می خواهیم مطمئن شویم که آیا اصلا کاربر اطلاعاتی را برای ما در تکس باکس مربوط به دریافت ایمیل وارد کرده است یا نه ؟ برای این کار از کدی مانند کد زیر استفاده می کنیم .
()Private Sub btnNull_Click If IsNull(Me.txtEmail) Then "کادر مربوط به آدرس ایمیل نباید خالی باشد " MsgBox End If End Sub
در اینجا برای کنترل تکس باکس مربوط به آدرس ایمیل از تابع IsNull استفاده کردیم . این تابع دو خروجی دارد . خروجی اول true خواهد بود در صورتی که کاربر هیچ مقداری را در کادر مربوطه وارد نکرده باشد .
حالت دوم وقتی است که کاربر اطلاعاتی را وارد کرده باشد و خروجی این تابع برای ما False خواهد بود . دقت کنید که این تابع فقط پر و خالی بودن تکس باکس را کنترل می کند و هیچ کاری به درست و غلط بودن این اطلاعات ندارد .
اگر خروجی این تابع True بود یعنی کاربر اطلاعاتی را در کادر مربوطه وارد نکرده است پس در ادامه کادر پیغام به کاربر نمایش داده می شود و این قضیه به اطلاع کاربر خواهد رسید .
۲- استفاده از تابع ISDATE .
این تابع برای مواقعی به کار می آید که ما می خواهیم از کاربر یک تاریخ را دریافت کنیم و برای اینکه مطمئن شویم که کاربر این مقدار را به دستی وارد کرده است می توانیم از این تابع کمک بگیریم.
به عنوان مثال به کدهای زیر نگاه کنید .
()Private Sub btn_Date_Click 'کنترل اینکه کاربر یک داده از نوع تاریخ را وارد کرده است If IsDate(Me.txtEmail) Then Else "شما باید یک تاریخ را با فرمت صحیح وارد کنید "MsgBox End If End Sub
در اینجا با استفاده از تابع Is Date مقدار ورودی از طرف کاربر را کنترل می کنیم. اگر این مقدار درست بود که هیچ . اما اگر مقدار نادرست بود یک پیغام به کاربر نمایش خواهیم داد .
۳- آشنایی با تابع ISNumber .
تابع Isnumber همانطور که از نامش پیداست کنترل می کند که آیا داده ای را که کاربر در تکس باکس مورد نظر وارد کرده است یک عدد است یا نه ؟ اگر مقدار ورودی عدد نبود آنگاه به کاربر یک پیغام مناسب داده خواهد شد .
برای مثال به کدهای زیر نگاه کنید
()Private Sub btn_IsNumeric_Click 'آیا کاربر یک عدد وارد کرده است؟ If IsNumeric(Me.txtEmail) Then Else "شما باید در این کادر یک عدد وارد کنید"MsgBox End If
در اینجا هم در صورتی که کاربر مقداری به غیر از یک عدد را وارد کرده باشد برنامه بطور خودکار پیغامی را برایش نمایش می دهد .
۳- آشنایی با تابع Left
تابع Left یکی دیگر از توابعی است که با استفاده از آن می توانیم به اعتبار سنجی داده های ورودی از طرف کاربر بپردازیم .
فرض کنید یک تکس باکس داریم که می خواهیم در ان از کاربر شماره موبایل را دریافت کنیم . خوب می دانیم که تمامی شماره های موبایل با پیش شماره ۰۹ شروع می شود .
حالا می خواهیم کنترل کنیم که کاربر حتما شماره ای را که وارد می کند شامل این دو رقم در سمت چپ باشد . برای این کار از کدهایی مانند کد زیر استفاده می کنیم .
Sub test() Dim txt As String txt = 2324344 If Left(txt, 2) <> "09" Then ("پیش شماره مورد نظر باید با " & "09" & "شروع شوند ")MsgBox End If End Sub
در اینجا با استفاده از این تابع مطمئن می شویم که کاربر شماره موبایل خود را حتما با پیش شماره ۰۹ وارد کند . در غیر اینصورت طی یک کادر پیغام به کاربر اطلاع رسانی می شود .
این مطلب به تدریج تکمیل می شود .
مطالب زیر را حتما مطالعه کنید
ذخیره نمودارها با کدهای VBAبصورت تصویر+راهنمای گام به گام
لیست باکس ها در برنامه نویسی VBA ؛ تمام چیزی که باید بدانید .
۷ اشتباه در کدنویسی VBA که ممکن است شما هم مرتکب شوید ؟
توی این آموزش راجع به اشتباهاتی که ممکن است در برنامه نویسی VBA مرتکب آنها شوید صحبت می کنیم .
با این خطای Runtime Error 1004 در VBA چکار کنیم ؟
در این آموزش راجع به خطایی به اسم Run time error 1004 در برنامه نویسی وی بی ای با هم صحبت می کنیم .
دیدگاهتان را بنویسید