چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
سلام بر دوستان و اساتید
در یک فایل اکسس چند فیلد داریم مثلا نام و نام خانوادگی
میخواهیم در این فیلد ها فقط کاراکتر فارسی نوشته شود---نه انگلیسی و نه عدد---
این خواسته میتواند در تنظیمات خود فیلد باشد یا بصورت کد vb نوشته و در خاصیت keypress یا keydown قرار داده شود
با سپاس از شما
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
می تونی در تنظیمات مربوط به اون تکست باکس خاصیت keyboard language را برابر فارسی قرار بدهید.
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
نقل قول:
نوشته شده توسط
reza_1199
می تونی در تنظیمات مربوط به اون تکست باکس خاصیت keyboard language را برابر فارسی قرار بدهید.
بسیار سپاس از شما .....هدف اینه که به هیچ عنوان انگلیسی یا عدد نتونه وارد کنه
با alt+shift براحتی میشه صفحه کلید رو تغییر داد , و انگلیسی تایپ کرد که مد نظر ما نیست :قلب:
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
حالتهای مختلفی رو میشه تصور کرد:
یکی اینکه از رخدادهای keydown/keypress فیلد استفاده کنین. این روش رو مطمئنم قبلا اینجا گفته شده و با جستجو میتونین پیداش کنین.
البته روش بدی هست! هم در ذات و هم در عملکرد.
ایرادهای ذاتیش به کنار، از نظر عملکرد هم هنوزکاربر میتونه با copy-paste یا drag-and-drop هر متن دلخواهی رو وارد فیلد کنه.
راه دیگه این هست که بگذارید کاربر هر چی دلش خواست وارد کنه ولی در رخداد before update فیلد خفتش کنین و جلوی کارش رو بگیرین.
یک راه دیگه مشابه حالت بالایی هست ولی از رخداد after update استفاده و تمام کارآکترهای ناخواسته رو خودمون حذف میکنیم و (احتمالا) مزاحم کاربر هم نمیشیم.
برای این دو روش آخر، بهتر هست از regular expression استفاده بشه به اینصورت که یک white list از کارآکترهای مجاز (اینجا فقط فارسی) میسازیم و اگر غیر از اینها در فیلد دیده شد، بسته به انتخاب روش، یا جلوی آپدیت رو میگیریم و یا اونها رو حذف و بعد آپدیت میکنیم.
حالا اگر مشکلی در پیاده سازی هست بگین تا راهنمایی کنم.
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
با سپاس از دقت نظر جنابعالی ...اگر امکانش باشه یک فایل اکسس نمونه اینجا ارسال بفرمایید که بی نهایت سپاسگزار میشم
اما جهت اطلاع میخواستم یک موردی رو بدونم
ما یه کدی شبیه کد زیر:
On Error Resume Next
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 Then KeyAscii = 0
که فقط اجازه میده عدد وارد فیلد بشه
حال میخواستم بدونم بجز راه معقولی که شما پیشنهاد دادین آیا میشه با محدود کردن کد ascii اجازه فارسی نویسی به کاربر ندهیم یا خیر ...
بسیار سپاس
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
نقل قول:
آیا میشه با محدود کردن کد ascii اجازه فارسی نویسی به کاربر ندهیم یا خیر ...
اگر همین برای شما کفایت میکنه پاسخ مثبت هست، ولی کارآکترهای فارسی پراکنده هستن و باید چند رنج و چند کد تکی رو بررسی کنین.
در ضمن ممکنه برای حروفی مثل (ؤ أ ء ة إ ۀ ....) یا حرکت و تنوین و تشدید ( بَ بُ بِ بٍ ...) و کشیده (کـــــشـــیــــــده) هم برنامه جدا داشته باشین.
کارآکترهای فارسی و عربی در رنج حدودی 1500 تا 1800 قرار دارن.
میتونین با برنامه character map کد هر کاراکتر رو بررسی کنین.
ولی بهتره با کد زیر یک جدول بسازین و اونجا اینکار رو انجام بدین:
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
docmd.runsql ("create table chars ([code] integer , [char] text(2))")
dim i as integer
with currentdb.openrecordset("chars")
for i=1500 to 1800
.addnew
!code=i
!char=chrw(i)
.update
next
.close
end with
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟
وقتی که کدهای مورد نظرتون رو از جدول پیدا کردین اونها رو در تابع keypress استفاده کنین،
چیزی شبیه به کد زیر:
select case keyascii
case 1570 to 1594 , 1601 to 1609
case 1662 , 1670 , 1688 , 1705 , 1711 , 1740
case 32 , 8
case else
keyascii=0
end select
نقل قول: چگونه در یک فیلد اکسس فقط فارسی بنویسم ؟