راههای مختلفی برای استفاده از تاریخ شمسی در اکسس وجود دارد ، که بنا به تجربه چندین ساله در استفاده از این برنامه پایگاه داده ای پیشنهاد ما استفاده از ماژولهایی است که به شکل خیلی ساده در ادامه توضیح داده ایم چگونه می توانید از آنها استفاده کنید.
اضافه کردن تاریخ شمسی در اکسس

برای اینکه بتوانید از امکانات شمسی در برنامه اکسس خود بهره ببرید کافیست مراحل زیر را دنبال کنید.
زمان مورد نیاز: 10 دقیقه
ابتدا فایل مورد نیاز را از انتهای همین مطلب دانلود کنید

در انتهای این مطلب و از باکس دانلود ، فایل اکسس متن باز را دانلود کنید که در نتیجه یک فایل با پسوند accdb که دارای دو آبجکت می باشد در اختیار خواهید داشت.
اضافه کردن امکانات تاریخ شمسی به فایل اکسس

برای استفاده از امکانات تاریخ شمسی در اکسس دو حالت وجود دارد :
1- در حال ایجاد یک فایل جدید اکسس هستید
2- میخواهید این امکانات را به فایل اکسس که از قبل داشتید اضافه کنید.
در مورد اول کار کمی ساده تر است ، یا به عبارتی زحمت کمتری دارد و باید مراحل ساده زیر را انجام دهید.
1- فایل اکسس خود را بازکنید و به تب External Data بروید.
2- مطابق تصویر New Data Source و From Database و در نهایت Access را انتخاب کنید.
انتخاب فایل دانلودی و ایمپورت به فایل خودتان

در پنجره ای که باز می شود مطابق تصویر ، با زدن Browse فایل دانلودی را انتخاب کنید.
دقت کنید که گزینه اول انتخاب شده باشد.
حالا روی OK کلیک کنید تا پنجره انتخاب آبجکتها برای انتقال باز شود.
انتخاب فرم و ماژول

در پنجره ای که باز می شود ، ابتدا تب Forms را انتخاب کرده و frmCal را انتخاب کنید.
سپس به تب Modules رفته و offiecbazShamsi ر اانتخاب کرده و OK کنید.
حالا دو آبجکت ، یکی فرم با نام frmCal و دیگری ماژول با نام officebazSHamsi باید به فایل اکسس شما اضافه شده باشد .
نکته : در زمان انتقال دقت داشته باشید فایل دانلودی باز نباشد.
نکته دو : اگر فایل اکسس شما از قبل دارای آبجکتهای دیگری می باشد ، حتما یکبار به محیز کدنویسی بروید ، این کار را با گرفتن کلیدهای Alt+F11 انجام دهید . به تب Debug بروید و گزینه اول را کلیک کنید ، اگر با ارور مواجه شدید ، احتمالا از قبل ماژولهایی دارید که با این ماژول جدید تکرار تشخیص داده شده .
تولید:
- نسخه اولیه توسط آقای آزادی
- تکمیل و توسعه توسط آفیس باز
ابزارها:
- دانلود فایل ضمیمه که یک فایل متن باز اکسس است
اطلاعات تکمیلی: راههای زیادی را برای استفاده از تاریخ شمسی در این سالها بررسی کرده و آزمایش کرده ام و بنا به تجریه استفاده از این روش و ماژولهای ارائه شده بهترین روش می باشد.
تبدیل تاریخ میلادی به شمسی در اکسس
فرض می کنیم که یک جدول داریم با نام tblOrder که دارای فیلدی به نام orderDate می باشد که از نوه تاریخ میلادی وارد شده و ما میخواهیم آن را به شمسی تبدیل کنیم .

برای این کار کافیست یک کوئری ساده بسازیم و بعد می توانیم از آن در فرم و گزارش هم به راحتی استفاده نمائیم.
- ابتدا ماژول تاریخ شمسی در اکسس را از انتهای همین مطلب دانلود کنید.
- مطابق فیم آموزشی عمل کنید و توابه را به فایل خود اضافه کنید.
- به تب Create بروید و روی query Design کلیک کنید.
- جدول مورد نظر را درگ کنید و به محیط کوئری اضافه نمائید.
- فیلدهای مورد نیاز را به لیست فیلدهای کوئری اضافه کنید.
- کوئری را ذخیره کنید و ببنید و دوباره در نمای طراحی باز کنید.
- در اولین فیلد خالی کوئری کلیک راست کرده و Built را بزنید.
- در پنجره باز شده کد زیر را بنویسید.
نکته : ذخیره کردن کوئری به این دلیل است که لیست فیلدها در نمای طراحی ظاهر شود و از درصد خطا کاسته شود.
orderDateShamsi: To_Hejri([Order Date])
نمایش نام ماه شمسی در اکسس
فرض می کنیم که مراحل بالا را انجام داده ید و حالا یک کوئری با نام qrDate دارید که در آن یک فیلدی ایجاد کرده اید با نام orderShamsiDate که تاریخ شمسی را در خود نگهداری می کند ، حالا کافیست مراحل زیر را انجام دهید.
- کوئری qrDate را در نمای طراحی باز کنید .
- در فیلد جدید فرمول زیر را بنویسید.
MahName: MahH(NoSlash([orderDateShamsi]))
با انجام مراحل بالا ما دو کار را انجام داده ایم ، تاریخ میلادی را در اکسس به شمسی تبدیل کرده ایم ، از تاریخ تبدیل شده نام ماه شمسی را استخراج کرده ایم . و نتیجه مانند تصویر زیر می شود.

تبدیل تاریخ شمسی به میلادی در اکسس
برای تبدیل تاریخ شمسی به میلادی که در واقع برعکس مثال قبلی کار می کند کافیست مراحل زیر را دنبال کنید.
همان کوئری که در مرحله قبل ایجاد کردیم را در نظر بگیرید که یک فیلد دارد با نام orderDateShamsi آن کوئری را در نمای دیزاین باز کنید . البته فرض بر این است که ابتدای این مطلب را مشاهده کرده و تاریخ شمسی در اکسس را اضافه نموده اید
- در یک فیلد جدید کلیک راست کرده و روی Built کلیک کنید.
- کدهای زیر را در آنجا قرار دهید .
DateSamsi: ShamsiToMiladi(sal(NoSlash([orderDateShamsi])),mah(NoSlash([orderDateShamsi])),rooz(NoSlash([orderDateShamsi])))
نکته : بدیهی است که احتمالا نام فیلدهای شما متفاوت باشد که باید اصلاح گردد.
نکته 2: اگر تاریخ شمسی شما دارای اسلش باشد باید از کد بالا استفاده کنید. در غیر اینصورت تابع NoSlash را استفاده نکنید.

آپدیت ، اضافه کردن ماه به تاریخ
در نسخه 2.5.0 تاریخ شمسی در اکسس که به رایگان برای دانلود قرار گرفته است دو ماژول کاربردی اضافه شده است ، ماژول اول به نام AddMonth که وظیفه اضافه کردن ماه یه تاریخ را دارد و تابع AddWeek که وظیفه اضافه کردن هفته به تااریخ را به عده دارد.
در ادامه ویدیو آموزشی دو تابع جدید نحوه استفاده از آنها را آموزش می دهد.
تابع AddMonth می تواند کمک بسیار زیادی در مواقعی مانند صدور دفترچه اقساط با اکسس به شما بکند .
تقویم بازشونده شمسی به همراه تعطیلات
در این آپدیت که ویژه اعضای ویژه سایت می باشد ، می توانید به برنامه های اکسس خود تاریخ شمسی را به گونه ای اضافه نمائید که هنگام انتخاب تاریخ ، موارد ذیل را نسبت به نسخه رایگان داشته باشید.
- مشاهده تاریخ امروز با رنگی متمایز
- تغییر رنگ روزهای تعطیل به رنگ دلخواه .
- با نگه داشتن موس روی تاریخ تعطیل مناسبت آن نمایش داده شود.
- اضافه کردن تاریخ تعطیل رسمی و غیر رسمی به دلخواه.
- هنگام انصراف تاریخ در مقصد تغییر نمی کند.
ادامه آموزش و دانلود ویژه
توضیح مهم اینکه در محتوایی که برای اعضای ویژه قرار داده شده ، فایل اکسس دارای تقویم فارسی به همراه مناسبتها و تعطیلات می باشد و یک ویدیو آموزشی برای نحوه استفاده در برنامه های خودتان وجود دارد .
دو حالت وجود دارد :
یا برنامه ای از قبل دارید و می خواهید امکانات تاریخ شمسی اکسس را به همراه تعطیلات و مناسبتها اضافه نمائید.
در حال نوشتن برنامه جدیدی هستید .
هر دو روش توضیح داده شده است.
برای مشاهده ادامه مطلب باید وارد سایت شوید
58 Comments
Join the discussion and tell us your opinion.
عشقی عشق، عالیه
نظر لطف شماست ممنون
سلام ماژول تاریخ شمسی را خرید و نصب کردم وقتی روی فرم باز شوی تاریخ دکمه انصراف را میزنی تاریخ روز جاری را ثبت می کنه لطفا راهنمایی نمایید با تشکر
سلام در آپدیت برطر ف خواهد شد
سلام
تقویم بازشونده اکسل ندارین !؟؟
عالیه. فقط چطوری روزهای تعطیل رو مشخص کنیم؟؟
سلام توی این نسخه امکان مشخص کردن روزهای تعطیل فعلا وجود نداره متاسفانه
سلام کی آپدیت میشه؟؟؟؟؟؟؟؟؟؟؟؟
من فکر کردم وقتی آموزش روزهای تعطیلو گذاشتین حتما توی نسخه 2.5.0 وجود داره این امکان
این که همون تقویم قبلیه
سلام برای دانلود با امکانات تعطیلات باید عضویت ویژه داشته باشید
جناب بحری ممنون از زحمات شما ..ماژول خیلی بهینه شده ..عالی هست
اما
مثل ماژول قبلی از تاریخ 1300 تا 1339 روزهای هفته رو اشتباه نشون میده …در واتس اپ فیلم فرستادم براتون ..اینجا هم میرفستم
با سپاس از شما …
فیلم را در لینک زیر مشاهده بفرمایید….
https://uupload.ir/view/untitled_project_i2s9.mp4/
سلام ممنون از اطلاع رسانی شما
این به دلیل تاریخ مبنا و همچنین اختلاف سال کبیسه با شال میلادی هست که دارم سعی میکنم برطرفش کنم
سلام و ارادت
ممنون از زحمات شما
سوال: با اين ماژول ميتوانم بطور مستقيم تاريخ شمسي را وارد كنم؟
نميخواهم ميلادي را به شمسي تبديل كنم، ميخواهم تاريخ شمسي را وارد كنم.
يعني خودم يك جدول درست كردم و ميخواهم اسم افراد را وارد كنم و تاريخ تولد آنها را به شمسي وارد كنم.
ميتوانم؟ راهنمايي ميفرماييد. ممنون
ویدیو موجود در مطلب رو حتما ببینید کامل توضیح داده شده
سلام ممنون از ماژول خیلی خوبتون
ایا تابعی هم داره که بشه اختلاف دو تاریخ رو محاسبه کرد
سلام بله آموزشش رو خواهم گذاشت و مطلب رو آپدیت خواهم کرد
خیلی خوبی خیلی چون واقعا دارایی به ما کمک میکنی دوست دارم حیف امکان اومدن به تهران و شرکت در کلاس شما را به علتمشکلات مالی و غیره ندارم
ممنونم نظر لطف شماست
سلام
دم شما گرم
تو تست هایی که کردم تبدیل میلادی به شمسی با تابع To_Hejri به ارور بر میخورد! البته با پاس دادن now() به این تابع مشکلی وجود نداشت و لی اگر دستی یه تاریخی مثل ‘5/28/2010’ رو بهش بدیم به ارور میخوره!
سلام ایت تابع تست شده و اگر فرمت فیلد شما تاریخ باشه و درست هم وارد شده باشه صحیح عمل می کنه
سلام مهندس بحری عزیز
همه چیز عالیه، فقط زمانی که فرم تقویم باز میشه بعضی از فونت ها رو نمیشناسه و کدهای نامعلومی رو نمایش میده.
مثلا بجای انتخاب تاریخ کدهای نامعلومی رو می زنه.
فونت موجود در فایل رو هم داملود و نصب کردم باز هم مشکل حل نشد. بقسه فونت ها درست هست فقط انتخاب تاریخ اشتباه
می باشد. لطف کنید بفرمایید باید چکار کنیم؟
سلام منظورتون تو فرم باز شونده است؟
سلام من هم همین مشکل را دارم
یعنی وقتی فورم را باز میکنم فونت دکمه تاریخ امروز به همر ریخته است با وجودیکه در قسمت دیزاین درست است ولی در اجرا درست نشان نمی دهد
سلام توی آپدیت درستش میکنم
با عرض سلام و درود
با عنایت به اینکه بنده در فرمها دکمه استفاده کردم و برای دکمه ها از ماکروها استفاده کردم متاسفانه در موقع اجرای تاریخ شمسی با مشکل مواجه شدم و اون هم بخاطر اینکه توی یه جدول نمیشه هم از ماکرو و هم از بیلدر استفاده کرد . لطفاً راهنمایی بفرمایید ممنون 🙏🙏🙏
سلام اصلا متاسفانه متوجه مشکلتون نشدم
سلام
تشکر بابت این ماژول.
این ماژول برای اختلاف دوتا تاریخ به صورت روز مینویسه(که با تقسیم حل میشه)
ولی سوالم اینجاس:: چرا وقتی که از برنامه استفاده میکنی(از ماژول دستور diff) و به report و یا form منتقل میشن برنامه هنگ میکنه؟؟؟؟؟داده ها حدود ۲۰۰ تا هستن!!!!!!
سلام وقت بخیر
برای تاریخ میلادی با تابع now امکان استفاده در default value برای ثبت تاریخ و ساعت همین لحظه وجود داره
چنین تابعی هم برای این ماژول پیشبینی شده؟
سلام میتونید از ترکیب تایع Shamsi و تابع NOw استفاده نمائید
تابع شمسی رو که استفاده میکنم توی فیلد default value این پیغام رو میده!
Unknown function ‘Shamsi’ in validation expression or default value on ‘0_tbl_person.Recive_date’.
ممنون میشم راهنمایی کنید
سلام این ماژول تاریخ شمسی شما با Access 2007 هم کار میکند یا از ورژن خاصی به بعد قابل اجراست؟ ممنون
سلام
من آپدیتهای جدید رو با آفیس 2007 تست نکردم متاسفانه
سلام جناب آقای بحری
من تقویم رو استفاده کردم اما هیچ رنگ بندی ندره و تماما خاکستری نشون میده مشکلش چی هست؟
ممنون میشم راهنمایی فرمایید.
سلام لطفا ویدیو آموزشی اول پست رو ببینید
سلام خداقوت… ممنون بابت زحمتاتون… ببخشید باتوجه به تفاوت های اکسس ها ، این تقویم رو چجوری میشه روی اکسس2016 اجرا کرد؟؟؟
سلام فرقی نمیکنه و روش کار یکی هست
اما ماژول و فرم اضافه نمیشه… شاید من بلد نیستم… امکانش هست راهنمایی بفرمایید؟؟ اکسس 2019 با ویندوز 10 متشکرم
با عرض سلام دوباره
چرا این تقویم در آفیس ۲۰۲۱ کار نمی کند. در حالیکه در آفیس ۲۰۱۶ کار میکرد.
با سلام و احترام
ضمن تشکر از زحمات جنابعالی
در تقویم متوجه شدم که اسفند 1427 ، 30 روزی هست (سال کبیسه) اما در سایت time.ir این ماه را 29 روز نوشته . البته با تقویم باد صبا هم مقایسه کردم در اون هم 29 روز هست. ممنون میشم کنترل بفرمایید.
سلام استاد
مشکی برام پیش امده اگه ممکنه کمک کنید
کد های نوشته شده با VBA در برنامه کار نمیکنند ولی ماکرو ها مشکی ندارند
سلام و ادب و خدا قوت
سوالی داشتم خدمتتون
آیا امکان این وجود داره که مثل بالا که ماه نمایش داده می شه، با کدی روز هفته نمایش داده بشود. مثلا یکشنبه، دوشنبه و…
ممنونم از برنامه خوبتون
سلام بله در توابع وجود دارد
سلام
ممنونم استفاده کردم عالیه
تشکر
سلام
از این تقویم در فایل اکسسم استفاده کردم و یک فایل ساختم
آيا در دیگر سیستمها هم میتوانم بعد کپی فایل ساخته شده ام از این تقویم استفاده کنم ؟ یا باید در سیستمهای دیگر هم تقویم نصب شود ؟
در سایر سیستمها هم به راحتی میتونید استفاده کنید
سلام
در قسمت criteria کوئریم از این شرط استفاده میکنم اما ذحیره نمیکنه و خطای عملگر میگیره.خطایی که میگیره از ؛ هستش
اما توی expression builder ظاهرا باید ؛ وارد کرد.ممنون میشم راهنمایی بفرمایید
Diff(Shamsi()؛[tarikhe_darkhast]) < 7
سلام، وقت بخیر
در استفاده از تاریخ به یه مشکلی برخوردم، زمانی که میخوام تاریخ 29/02/1401 رو به شمسی وارد فیلد مربوطه کنم خطای زیر رو میده:
The value you entered does not match the date/time data type in this column.
اما زمانی که از تاریخ های قبل 29 ام استفاده میکنم مشکلی نداره!
هم ماژول شما توی این تاریخ کار نمیکنه و هم دیتا توی ستون مربوطه ذخیره نمیشه. Region سیستم و فرمت تاریخ رو هم تغییر دادم درست نشد!!
ممنون میشم راهنمایی کنید. با تشکر
با سلام و عرض خدا قوت خدمت استاد عزیز، اگه امکانش هست قابلیت کم کردن تعداد ماه از تاریخ شمسی به ماژول اضافه بشه ممنون میشم، بازم ممنونم
سلام یادداشت شده و در آپدیت بعدی به امید خدا برطرف می شه
سلام استاد
من ماژول تاریخ شمسی خریداری و در حال استفاده هستم که چندتا ایراد کوچیک دیدم که اگه رفع عالی میشه
1- حرکت موس روی روزهای هفته باعث چشمک زدن میشه که با یه if فکر کنم مشکلش برطرف بشه
2- کنترل باکس غیر فعال نشده که نماد ضربدر بالا نشون میبده که تو تنظیمات فرم قابل رفع هست
3- با جابجایی سال کلمه امروز به سال بعد انتقال پیدا میکنه و پس از بازگشت به سال جاری کلمه روز نمایش داده نمیشه
4- با جابجایی بین سال نمایش روز های تعطیل به هم میریزه
منظورتون رو از مورد دوم متوجه نشدم
مورد 4 رو حتما بررسی و برطرف می کنم
درود و روزخوش؛
ممنون میشم لینک خرید تقویم شمسی رو بفرستید.
بعد خرید باید مطابق همین ویدیوها پیش برم؟
تاریخ در کوئری ها هم تغییر میکنن؟
باید کد نویسی کنیم یا نه؟ ممنون
سلام چطوری میتونم تاریخ رو به صورت زنده توی یک فرم داشته باشم؟
سلام اگر منظورتون اینه که هر روز تاریخ همون روز رو داشته باشید توی فرم باید از تابع
shamsi()
استفاده کنید
یا
date()
با عرض سلام و ارادت مجدد خدمت شما استاد گرانبها.در مدتی که بنده پیگیر آموزش های اکسس هستم( قریب دوسال)، خاک همه سایت هایی که در این زمینه فعالیت دارند الک کردم، انصافا هیچ سایت و استادی چه در زمینه آموزش ها و چه در زمینه پروژه ها به گرد پای شما نرسیده و نمیرسه ، اینو گفتم چون چیزهای زیادی از شما یاد گرفتم و در این زمینه مدیون شما هستم ، خداوند هر آنچه که خیر است را سر راه شما قرار دهد، مخلصانه از شما تشکر میکنم و امیدوارم راهتون را با قدرت ادامه بدهید
با سلام و درود و تشکر ویژه از زحمات شما، در تابع AddMonth با برج ۱۲ ایراد وجود دارد مثلا اگر به تاریخ ۱۴۰۰.۱۲.۰۱ تعداد ۱۲ ماه یا ۲۴ ماه یا مضربی از ۱۲ اضافه شود جواب تابع برای ۱۲ ماه ۱۴۰۲.۰۰.۰۱ بدست می آید، لطفا بررسی نمایید، با تشکر
سلام و درود استاد عزیز، ظاهرا مشغله کاری استاد زیاد شده که با گذشت قریب دو ماه از گزارش مشکل (تابع AddMonth) تاکنون پاسخی داده نشده، باز هم سپاسگزارم بابت آموزش های خیلی خوبتون
با سلام و تشکر مجدد از زحمات شما، مشکل در تابع AddMonth همچنان لاینحل باقیمونده و جوابی داده نشده، تابع فوق با برج ۱۲ ایراد وجود دارد مثلا اگر به تاریخ ۱۴۰۰.۱۲.۰۱ تعداد ۱۲ ماه یا ۲۴ ماه یا مضربی از ۱۲ اضافه شود جواب تابع برای ۱۲ ماه ۱۴۰۲.۰۰.۰۱ بدست می آید، لطفا بررسی نمایید، با تشکر