سلام
ویندوز من 11 هستش و vba نسخه 7.1 هستش. تنظیمات زبان را به Persian تغییر دادم ولی در محیط کدنویسی تمام کاراکترها نامفهوم هستند. تا ویندوز 10 با تغییر زبان در بخش system local مشکل حل میشد ولی در ویندوز 11 مشکل حل نشد. ممنون میشم راهنمایی کنید
سلام
ویندوز من 11 هستش و vba نسخه 7.1 هستش. تنظیمات زبان را به Persian تغییر دادم ولی در محیط کدنویسی تمام کاراکترها نامفهوم هستند. تا ویندوز 10 با تغییر زبان در بخش system local مشکل حل میشد ولی در ویندوز 11 مشکل حل نشد. ممنون میشم راهنمایی کنید
.....................
آخرین ویرایش به وسیله eb_1345 : جمعه 25 اردیبهشت 1405 در 12:12 عصر
1- متن فارسی در MsgBox بهم ریخته نمایش داده می شود
2- گزینه beta درحالت فعال و غیرفعال تست شد و نتیجه یکسان بود
3- متنهای فارسی در TextBox بصورت فارسی در SQL ذخیره نمی شوند (از طریق ADODB)
4- متنهای Label و عنوان Buttonها در طراحی فرم و گزارش فارسی را صحیح نمایش میدهند.
آخرین ویرایش به وسیله mmbguide : سه شنبه 29 اردیبهشت 1405 در 06:56 صبح
سلام و روز خوش
همون ست کردن system locale روی persian کافی هست - برای ویندوز ۱۱ هم همینه1- متن فارسی در MsgBox بهم ریخته نمایش داده می شود
اطلاعاتی که از دیتابیس خونده میشن در msgbox درست نمایش داده میشه چون یونیکد ذخیره میشن؛
ولی استرینگهای فارسی نوشته شده در خود vba editor نیاز به ست کردن system locale داره (چون ادیتور با codepage کار میکنه و یونیکد نیست)
یک بار دیگه عبارتها رو تایپ کنین.
و تاپیک زیر رو هم یه نگاهی بندازین:
آموزش: چگونه بدون تغییر System Locale ، نوشته فارسی در Message Box را به درستی نمایش دهیم؟
این مهمه!3- متنهای فارسی در TextBox بصورت فارسی در SQL ذخیره نمی شوند (از طریق ADODB)
چند مورد هست که باید دقت کنین:
- در MS SQL برای دیتا فارسی فیلدها رو باید nvarchar تعریف کنین نه varchar
حالا این رو هم یکی ممکنه بگه من varchar تعریف کردم و دیتا هم درست میشینه؛
اینا با هم تفاوت دارن و دیتا هم ممکنه درست نشینه و آثارش بالاخره از یک جایی میزنه بیرون.
- اگر adodb recordset ساختین و بعنوان رکوردست bound form تعریف کردین، باز هم نباید در دیتابیس بصورت ؟؟؟؟ بیاد
- اگر فرم شما unbound هست و با متد execute روی connection یک insert query یا sp اجرا میکنین، باز هم فارسی باید در دیتابیس بشینه
با توجه به اینها، من احتمال میدم که شما هم:
1- collation دیتابیس رو persian ست نکردین (احتمالا latin هست)
2- فیلدهای استرینگ رو nvarchar نگذاشتین
ویندوز را به نسخه 10 تغییر دادم و مشکل حل شد. البته در چندین سیستم با ویندوز 11 امتحان کردم ولی مشکل حل نشد. تمام ستونهای در SQL از نوع nVarChar بودند. در هر حال اطلاعات بصورت دستی در SQL Server فارسی ثبت میشدند به غیر از دادههایی که اکسس ارسال میکرد. با نصب ویندوز 10 و تنظیم System local به persian مشکل حل شد