چطور زبان ورود اطلاعات در اکسس را کنترل کنیم ؟
سلام . وقت شما به خیر . به سافت پلاس خوش آمدید. امروز می خواهیم به سراغ برنامه نویسی در اکسس برویم و به کمک قابلیت کد نویسی در آن کنترل زبان ورود اطلاعات در اکسس را به دست بگیریم .
یک قابلیت فوق العاده کاربردی که مطمئنم از عهده خیلی ها بر نمی آید اما شما قرار است در این مطلب صفر تا صد این کار را یاد بگیرید . آن هم خیلی ساده و سریع .
اما منظور از کنترل کردن زبان ورود اطلاعات در اکسس چی هست ؟
فرض کنید که شما یک فرمی را طراحی کرده اید و در داخل آن چند تا تکس باکس قرار دارد و قرار است کاربر یک سری از اطلاعات مورد نظر شما را در داخل آن تکس باکس ها وارد کند .
مثلا یک چیزی مثل فرم زیر .
در فرم بالا قرار است کاربر مشخصات مربوط به نام و نام خانوادگی خودش را در فیلدهای مورد نظر هم به صورت فارسی و هم به صورت انگلیسی وارد کند .
اما یک سوال ؟
شما یا برنامه اکسس شما چطور می توانید کنترل کنید که کاربر در فیلدی که باید از زبان فارسی استفاده کند به سراغ حروف انگلیسی نرود و یا برعکس در فیلد مربوط به وارد کردن نام به صورت انگلیسی از حروف فارسی استفاده نکند ؟
به نظر شما اکسس برای این کار چه امکاناتی را فراهم کرده است ؟
آیا واقعا با استفاده از خود اکسس امکان کنترل این قضیه وجود دارد ؟
اگر جواب سوال بالا مثبت است، چطور باید این کار را کرد و اگر پاسخ منفی است باید دنبال چه راهکاری رفت ؟
این ها و در کنار همه این موارد کلی مطلب و نکته دیگر وجود دارد که قرار است راجع به همه آنها با هم در این آموزش با هم صحبت کنیم .
من علیرضا شهرآئینی هستم و به شما این اطمینان را می دهم که اگر تا انتهای این آموزش من را همراهی کنید همه آن چیزی که در مورد کنترل زبان ورودی اطلاعات در اکسس به آنها احتیاج دارید را به شما آموزش بدهم .
یک مطلب خواندنی مرتبط : الزام کاربر به وارد کردن متن یا عدد در اکسس
فهرست محتوا
تابع کنترل کننده متن های فارسی
اول از متن های فارسی شروع کنیم .
می خواهیم کدهایی بنویسیم که کنترل کند کاربر در داخل تکس باکس مورد نظر ما فقط از حروف فارسی برای وارد کردن اطلاعات مورد نظر استفاده کند . برای شروع کار وارد محیط کد نویسی اکسس شده و کدهای زیر را در داخل آن وارد کنید .
Public Function check_char_FA_Function(Char As Integer) As Boolean
If Not (Char >= 1536 And Char <= 1791) And (Char <> 32 And Char <> 9 And Char <> 8) Then
msgbox "در این فیلد فقط از حروف فارسی استفاده شود "
check_char_FA_Function = False
Else
check_char_FA_Function = True
End If
Exit Function
End Function
اما چند تا نکته کوچک در مورد این کدها .
نکته اول اینکه این کدها در قالب یک تابع یا همان Function نوشته شده اند .
نکته دوم اینکه این تابع در حالت Public قرار دارد یعنی در داخل هر فرمی از اکسس قابلیت دسترسی دارد .
نکته سوم هم اینکه این کدها به خودی خود کاری نمی کنند مگر اینکه کدهای دیگری را بنویسیم که در ادامه راجع به انها هم صحبت خواهیم کرد . اما برویم به سراغ کدهای مربوط به کنترل متن های انگلیسی.
تابع کنترل کننده متن های انگلیسی
درست است که من و شما فارسی زبان هستیم و در اکثر پروژه ها با این زبان سر و کار داریم اما موقعیت هایی پیش می آید که ما نیاز پیدا می کنیم که با متن های انگلیسی هم سر و کار داشته باشیم .
برای اینکه مطمئن شویم کاربر از متن های انگلیسی استفاده می کند باید از کدهای زیر استفاده کنیم .
Public Function check_char_EN_Function(Char As Integer) As Boolean
If Not ((Char >= 65 And Char <= 90) Or (Char >= 97 And Char <= 122)) And (Char <> 32 And Char <> 9 And Key <> 8) Then
MsgBox "در اين فيلد فقط بايد از حروف انگليسي استفاده شود"
check_char_EN_Function = False
Else
check_char_EN_Function = True
End If
Exit Function
End Function
این تابع هم کارکردش دقیقا مانند تابع قبلی است . فقط با این تفاوت که این بار کنترل می کند که کاربر فقط و فقط از حروف انگلیسی برای وارد کردن اطلاعات در داخل تکست باکس استفاده کند .
اما در ادامه باید به سراغ تکست باکس های مورد نظر خودمان برویم و در داخل هر کدام از آنها یکی از این دو تا تابع را فراخوانی کنیم .
در ادامه به سراغ این کار می رویم .
جلوگیری از وارد کردن متن انگلیسی
در قدم اول می خواهیم کاری کنیم که کاربر فقط قادر به استفاده از حروف الفبای فارسی باشد و نتواند متنی را به صورت انگلیسی وارد کند .
اول باید مشخص کنیم که در کدام تکس باکس می خواهیم این اتفاق بیفتد .
در تصویر مربوط به فرم بالا تکست باکس با عنوان ” نام ( به فارسی ) همان تکس باکسی است که کاربر باید اسم خودش را به فارسی وارد کند.
با در نظر گرفتن این نکته که اسم این تکست باکس text0 است به سراغ کد نویسی مربوط به آن می رویم .
کدهای مربوط به رویداد before update
قبل از هر چیز فرم خودتان را به نمای دیزاین برده و تکس باکس مربوط به نام فارسی را انتخاب کنید .
حالا از کادر property sheet در سربرگ Event وارد محیط کد نویسی رویداد Before update شوید .
در این رویداد کدهای زیر را وارد کنید .
Private Sub Text0_BeforeUpdate(Cancel As Integer)
If Not IsNull(Text0) Then
If Not check_char_Function(Text0, 2) Then
Cancel = 1
End If
End If
End Sub
این کدها را که وارد کردید باید به سراغ رویداد بعدی بروید و کدهای لازم در داخل آن را هم بنویسید .
کدهای مربوط به رویداد OnKeyPress
حالا نوبت به این رویداد می شود داخل این رویداد باید کدهای زیر را وارد کنید .
Private Sub Text0_KeyPress(KeyAscii As Integer)
Call check_char_FA_Function(KeyAscii)
End Sub
حواستان باشد که KeyPress جزو رویدادهای مربوط به خود فرم است .
این کدها را هم که وارد کنید کار تمام است .
کافی است به سراغ تکس باکس اول رفته و سعی کنید در داخل آن حروف انگلیسی را وارد کنید .
نتیجه کار را خودتان مشاهده خواهید کرد .
باز هم به انتهای یک اموزش دیگر رسیدیم .
امیدوارم که برایتان کاربردی و مفید بوده باشد . خوشحال می شوم اگر نظری و یا سوالی در مورد این آموزش دارید با من در میان بگذارید .
در ضمن اگر در اجرای این آموزش به مشکلی برخوردید می توانید از ویدئوی ابتدای همین صفحه هم کمک بگیرید .
مطالب زیر را حتما مطالعه کنید
با رعایت این نکات تبدیل به یک برنامه نویس حرفه ای در اکسل شوید .
۷ نکته مهم در برنامه نویسی VBA که باید آنها را بدانید
ماکرو نویسی در اکسل |ببینید که ماکروها چقدر کاربردی اند.
زبان وی بی ای مرده است
۱۰ کاری که بدون برنامه نویسی VBA قادر به انجامش نبودید .
توی این آموزش کارهایی رو بررسی می کنیم که فقط با استفاده از کدهای وی بی ای می شود آنها را در آفیس انجام داد .
دیدگاهتان را بنویسید