برو به
سؤال یا مشکلی داری؟
در صورتی که
- در زمینه این آموزش سؤالی دارید
- مشکل شما با این آموزش رفع نشده است
میتوانید همیشه به صورت رایگان در قسمت پرسش و پاسخ سؤال خودتان را بپرسید
شما هم آموزش بدهید!
در صورتی که
- جای آموزشی خالی است و شما بلدید
- نکات و یا ترفندهایی را میدانید
خوشحال میشیم که با ما و سایر دوستانتان به اشتراک بگذارید. لطفاً از طریق پشتیبانی با ما در ارتباط باشید
تاریخ شمسی در اکسس Access
بین 10 الی 15 دقیقه
3,546
فهرست مطالب
- مشکل تاریخ شمسی چیست؟
- راه حل چیست؟
- استفاده از ماژول ها
- استفاده از کد VBA
مشکل تاریخ شمسی چیست؟
همانطور که میدانید اکسس تاریخ شمسی را پشتیبانی نمیکند و شما اگر تاریخ شمسی بخواهید وارد این برنامه کنید باید فیلد مربوطه را به صورت متنی قرار دهید. بنابراین شما نمیتوانید کوئریهای دلخواه خود را داشته باشید (مثلاً مرتبسازی بر اساس تاریخ یا گزارش فقط برای یک ماه خاص و یا غیره) زیرا متن قابلیت پردازش به این صورت را ندارد.
راه حل چیست؟
به صورت خیلی راحت باید بگم بهترین راهحل این هست که شما در جداول خود هم یک فیلد تاریخ شمسی و هم یک فیلد تاریخ میلادی در نظر بگیرید (تاریخ شمسی برای نمایش در گزارشها و تاریخ میلادی برای محاسبات و پردازشها) و سپس از طریق فرم و یکی از 2 روش زیر، وقتی تاریخ شمسی توسط شما ا کاربر وارد میشود اتوماتیک میلادی آن را حساب کنید و در جداول هر 2 را ذخیره کنید.
توجه کنید برای گزارشها هم اصولاً فرم برای تعیین پارامترهای کوئریها داریم و این اقدام تبدیل تاریخ را به راحتی در آن فرمها هم میتوانید انجام دهید.
استفاده از ماژول ها
یکی از رایجترین روشهای تبدیل تاریخ شمسی به میلادی استفاده از ماژولهای آماده است که دوستان زیادی زحمت تهیه آن را کشیدهاند. این ماژولها عموماً برای حمایت از توسعهدهنده و پشتیبانی و توسعه دارای هزینه میباشند و شما میتوانید با جست و جو در اینترنت به راحتی گستره وسیعی از این ماژولها را پیدا کنید.
مزایا و معایب
از جمله مزایای این ماژولها میتوان به راحتی استفاده و اینکه عموماً دارای یک پاپآپ گرافیکی تقویم برای انتخاب تاریخ هستند اشاره کرد.
از معایب شاید بتوان فقط به هزینه آنها اشاره کرد و اینکه آیا برای تمامی نسخههای جدید اکسس بهروزرسانی میشوند یا خیر، اگر خطا یا مشکلی داشتند نیز باید پشتیبانی شوند. (به همین دلیل ما نمیتوانیم هیچ سایت یا فردی را معرفی کنیم و مسئولیت این مورد را متقبل شویم)
استفاده از کد VBA
این روش را من دوست دارم! کد VBA را در انتهای این مقاله میتوانید دانلود کنید و در ادامه آموزش سریع و راحت استفاده از آن را براتون قرار دادیم.
مزایا و معایب
مزایا اینکه رایگان هست و معایب این هست که پاپ آپ گرافیکی ندارد و کاربر باید تاریخ شمسی را تایپ کند و این روش اتوماتیک تاریخ میلادی را محاسبه و در یک input دیگر فرم (محل تاریخ میلادی) قرار میدهد. همینقدر ساده! و البته همین باعث میشود نیاز به بهروزرسانی و هماهنگی با نسخههای مختلف اکسس نداشته باشد
گام 1
فایل انتهای مقاله را دانلود کنید و سپس در فایل اکسس خود کلیدهای Alt + F11 را بزنید تا پنجره VBA براتون باز شود.
گام 2
سپس در پنجره سمت چپ با عنوان Project روی نام فایل خود راست کلیک کرده و گزینه Import File را بزنید.
گام 3
سپس فایل با عنوان convertDate.bas را (که در گام 1 دانلود کردید) انتخاب و بعد از Import شدن فایل پنجره VBA را ببندید و وارد فرم دلخواه خودتان شوید (حتماً در حالت Design View برای فرم باشید)
گام 4
این قسمت را کمی دقت کنید تا مشکلی برنخورید! من توی فرم دو تا Input دارم که یکی برای تاریخ شمسی هست و یکی تاریخ میلادی!
طبق تصویر زیر اسم Input برای تاریخ شمسی jalali_date گذاشتم و برای تاریخ میلادی gregorian_date. پس شما این دو مقدار را باید با توجه به نام Inputهای خود تغییر دهید.
گام 5
Input تاریخ شمسی را انتخاب کنید و از قسمت properties بر روی تب event بروید و روی سه نقطه ... جلوی on Exit بزنید (یعنی وقتی کاربر تاریخ شمسی را کامل تایپ کرد و از input خارج شد)
گام 6
در پنجره باز شده روی حالت Code Builder بزنید و ok کنید تا وارد محیط VBA شوید.
گام 7
همانطور که میبینید پنجرهای در VBA باز شده و یک تابع برای حالت خروج از فیلد jalali_date برای ما نوشته است.
گام 8
از فایل VBA-code.txt (که در گام 1 دانلود کردید) خط اول را کپی کنید و داخل تابع قرار دهید. (تکتک کلمات رو توضیح میدم)
گام 9
تموم شد دیگه! در صورت تمایل میتوانید در فرم خودتون، فیلد تاریخ میلادی را مخفی کنید که کاربر متوجه اون نشه و دست بهش نزنه!
توضیح کد VBA گام 8
در کد گام 8 jalali_date و gregorian_date را که در گام 4 توضیح دادیم. با استفاده از property بنام value که در انتهای آنها نوشتیم (به. دات/نقطه قبل از value دقت کنید) یعنی به VBA گفتیم مقدار داخل این Inputها رو کاریش داریم.
تابع convertDateToGregorian هم که تابعی هست که در کد VBA که در گام 3 وارد کردیم وجود دارد و وظیفه تبدیل تاریخ را بر عهده دارد. همین
برای تبدیل میلادی به شمسی از تابع convertDateToJalali استفاده کنید. (خط دوم فایل گام 8)
دانلود فایلها
کد VBA تاریخ شمسی حجم فایل: 2 Kbتعداد دانلود: 393
مقالاتی که مرتبط هستند و احتمالاً دوست داشته باشی
تاریخ شمسی در اکسل
1401/12/28
تگها:
تاریخ شمسی
سؤال یا مشکلی داری؟
در صورتی که
- در زمینه این آموزش سؤالی دارید
- مشکل شما با این آموزش رفع نشده است
میتوانید همیشه به صورت رایگان در قسمت پرسش و پاسخ سؤال خودتان را بپرسید
شما هم آموزش بدهید!
در صورتی که
- جای آموزشی خالی است و شما بلدید
- نکات و یا ترفندهایی را میدانید
خوشحال میشیم که با ما و سایر دوستانتان به اشتراک بگذارید. لطفاً از طریق پشتیبانی با ما در ارتباط باشید