افزودن امکانات تاریخ شمسی به اکسس

افزودن امکانات تاریخ شمسی به اکسس

فهرست

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

اضافه کردن تاریخ شمسی در اکسس

امکانات تاریخ شمسی در اکسس

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

زمان مورد نیاز: 10 دقیقه

ابتدا فایل مورد نیاز را از انتهای همین مطلب دانلود کنید

فایل تاریخ شمسی آفیس باز نسخه 2.2

در انتهای این مطلب و از باکس دانلود ، فایل اکسس متن باز را دانلود کنید که در نتیجه یک فایل با پسوند 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 می باشد که از نوه تاریخ میلادی وارد شده و ما میخواهیم آن را به شمسی تبدیل کنیم .

تبدیل تاریخ میلادی به شمسی در اکسس
تبدیل تاریخ میلادی به شمسی در اکسس

برای این کار کافیست یک کوئری ساده بسازیم و بعد می توانیم از آن در فرم و گزارش هم به راحتی استفاده نمائیم.

  1. ابتدا ماژول تاریخ شمسی در اکسس را از انتهای همین مطلب دانلود کنید.
  2. مطابق فیم آموزشی عمل کنید و توابه را به فایل خود اضافه کنید.
  3. به تب Create بروید و روی query Design کلیک کنید.
  4. جدول مورد نظر را درگ کنید و به محیط کوئری اضافه نمائید.
  5. فیلدهای مورد نیاز را به لیست فیلدهای کوئری اضافه کنید.
  6. کوئری را ذخیره کنید و ببنید و دوباره در نمای طراحی باز کنید.
  7. در اولین فیلد خالی کوئری کلیک راست کرده و Built را بزنید.
  8. در پنجره باز شده کد زیر را بنویسید.

نکته : ذخیره کردن کوئری به این دلیل است که لیست فیلدها در نمای طراحی ظاهر شود و از درصد خطا کاسته شود.

orderDateShamsi: To_Hejri([Order Date])

نمایش نام ماه شمسی در اکسس

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

  1. کوئری qrDate را در نمای طراحی باز کنید .
  2. در فیلد جدید فرمول زیر را بنویسید.
MahName: MahH(NoSlash([orderDateShamsi]))

با انجام مراحل بالا ما دو کار را انجام داده ایم ، تاریخ میلادی را در اکسس به شمسی تبدیل کرده ایم ، از تاریخ تبدیل شده نام ماه شمسی را استخراج کرده ایم . و نتیجه مانند تصویر زیر می شود.

نتیجه تبدیل تاریخ میلادی به شمسی در اکسس
نتیجه تبدیل تاریخ میلادی به شمسی در اکسس

تبدیل تاریخ شمسی به میلادی در اکسس

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

همان کوئری که در مرحله قبل ایجاد کردیم را در نظر بگیرید که یک فیلد دارد با نام orderDateShamsi آن کوئری را در نمای دیزاین باز کنید . البته فرض بر این است که ابتدای این مطلب را مشاهده کرده و تاریخ شمسی در اکسس را اضافه نموده اید

  1. در یک فیلد جدید کلیک راست کرده و روی Built کلیک کنید.
  2. کدهای زیر را در آنجا قرار دهید .
DateSamsi: ShamsiToMiladi(sal(NoSlash([orderDateShamsi])),mah(NoSlash([orderDateShamsi])),rooz(NoSlash([orderDateShamsi])))

نکته : بدیهی است که احتمالا نام فیلدهای شما متفاوت باشد که باید اصلاح گردد.

نکته 2: اگر تاریخ شمسی شما دارای اسلش باشد باید از کد بالا استفاده کنید. در غیر اینصورت تابع NoSlash را استفاده نکنید.

تبدیل تاریخ شمسی به میلادی در اکسس
تبدیل تاریخ شمسی به میلادی در اکسس

آپدیت ، اضافه کردن ماه به تاریخ

در نسخه 2.5.0 تاریخ شمسی در اکسس که به رایگان برای دانلود قرار گرفته است دو ماژول کاربردی اضافه شده است ، ماژول اول به نام AddMonth که وظیفه اضافه کردن ماه یه تاریخ را دارد و تابع AddWeek که وظیفه اضافه کردن هفته به تااریخ را به عده دارد.

در ادامه ویدیو آموزشی دو تابع جدید نحوه استفاده از آنها را آموزش می دهد.

اضافه کردن ماه به تاریخ شمسی در اکسس

تابع AddMonth می تواند کمک بسیار زیادی در مواقعی مانند صدور دفترچه اقساط با اکسس به شما بکند .

تقویم بازشونده شمسی به همراه تعطیلات

در این آپدیت که ویژه اعضای ویژه سایت می باشد ، می توانید به برنامه های اکسس خود تاریخ شمسی را به گونه ای اضافه نمائید که هنگام انتخاب تاریخ ، موارد ذیل را نسبت به نسخه رایگان داشته باشید.

  1. مشاهده تاریخ امروز با رنگی متمایز
  2. تغییر رنگ روزهای تعطیل به رنگ دلخواه .
  3. با نگه داشتن موس روی  تاریخ تعطیل مناسبت آن نمایش داده شود.
  4. اضافه کردن تاریخ تعطیل رسمی و غیر رسمی به دلخواه.
  5. هنگام انصراف تاریخ در مقصد تغییر نمی کند.

ادامه آموزش و دانلود ویژه

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

دو حالت وجود دارد :

یا برنامه ای از قبل دارید و می خواهید امکانات تاریخ شمسی اکسس را به همراه تعطیلات و مناسبتها اضافه نمائید.

در حال نوشتن برنامه جدیدی هستید .

هر دو روش توضیح داده شده است.

قفل محتوای آفیس باز

برای مشاهده ادامه مطلب باید وارد سایت شوید

بهترین مسیر

با سالها تجربه ، سعی کردیم بهترین مسیر را برای یادگیری اصولی اکسل به شما معرفی کنیم.

58 Comments

Join the discussion and tell us your opinion.

  • جناب بحری ممنون از زحمات شما ..ماژول خیلی بهینه شده ..عالی هست
    اما
    مثل ماژول قبلی از تاریخ 1300 تا 1339 روزهای هفته رو اشتباه نشون میده …در واتس اپ فیلم فرستادم براتون ..اینجا هم میرفستم
    با سپاس از شما …
    فیلم را در لینک زیر مشاهده بفرمایید….
    https://uupload.ir/view/untitled_project_i2s9.mp4/

  • سلام و ارادت
    ممنون از زحمات شما
    سوال: با اين ماژول ميتوانم بطور مستقيم تاريخ شمسي را وارد كنم؟
    نميخواهم ميلادي را به شمسي تبديل كنم، ميخواهم تاريخ شمسي را وارد كنم.
    يعني خودم يك جدول درست كردم و ميخواهم اسم افراد را وارد كنم و تاريخ تولد آنها را به شمسي وارد كنم.
    ميتوانم؟ راهنمايي ميفرماييد. ممنون

  • خیلی خوبی خیلی چون واقعا دارایی به ما کمک میکنی دوست دارم حیف امکان اومدن به تهران و شرکت در کلاس شما را به علت‌مشکلات مالی و غیره ندارم

  • سلام

    دم شما گرم

    تو تست هایی که کردم تبدیل میلادی به شمسی با تابع To_Hejri به ارور بر میخورد! البته با پاس دادن now() به این تابع مشکلی وجود نداشت و لی اگر دستی یه تاریخی مثل ‘5/28/2010’ رو بهش بدیم به ارور میخوره!

  • سلام مهندس بحری عزیز
    همه چیز عالیه، فقط زمانی که فرم تقویم باز میشه بعضی از فونت ها رو نمیشناسه و کدهای نامعلومی رو نمایش میده.
    مثلا بجای انتخاب تاریخ کدهای نامعلومی رو می زنه.
    فونت موجود در فایل رو هم داملود و نصب کردم باز هم مشکل حل نشد. بقسه فونت ها درست هست فقط انتخاب تاریخ اشتباه
    می باشد. لطف کنید بفرمایید باید چکار کنیم؟

  • با عرض سلام و درود
    با عنایت به اینکه بنده در فرم‌ها دکمه استفاده کردم و برای دکمه ها از ماکروها استفاده کردم متاسفانه در موقع اجرای تاریخ شمسی با مشکل مواجه شدم و اون هم بخاطر اینکه توی یه جدول نمیشه هم از ماکرو و هم از بیلدر استفاده کرد . لطفاً راهنمایی بفرمایید ممنون 🙏🙏🙏

    • سلام
      تشکر بابت این ماژول.
      این ماژول برای اختلاف دوتا تاریخ به صورت روز مینویسه(که با تقسیم حل میشه)
      ولی سوالم اینجاس:: چرا وقتی که از برنامه استفاده میکنی(از ماژول دستور diff) و به report و یا form منتقل میشن برنامه هنگ میکنه؟؟؟؟؟داده ها حدود ۲۰۰ تا هستن!!!!!!

  • سلام وقت بخیر
    برای تاریخ میلادی با تابع now امکان استفاده در default value برای ثبت تاریخ و ساعت همین لحظه وجود داره
    چنین تابعی هم برای این ماژول پیشبینی شده؟

  • سلام خداقوت… ممنون بابت زحمتاتون… ببخشید باتوجه به تفاوت های اکسس ها ، این تقویم رو چجوری میشه روی اکسس2016 اجرا کرد؟؟؟

  • با عرض سلام دوباره
    چرا این تقویم در آفیس ۲۰۲۱ کار نمی کند. در حالیکه در آفیس ۲۰۱۶ کار میکرد.

  • با سلام و احترام
    ضمن تشکر از زحمات جنابعالی
    در تقویم متوجه شدم که اسفند 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- با جابجایی بین سال نمایش روز های تعطیل به هم میریزه

  • درود و روزخوش؛
    ممنون میشم لینک خرید تقویم شمسی رو بفرستید.
    بعد خرید باید مطابق همین ویدیوها پیش برم؟
    تاریخ در کوئری ها هم تغییر میکنن؟
    باید کد نویسی کنیم یا نه؟ ممنون

  • با عرض سلام و ارادت مجدد خدمت شما استاد گرانبها.در مدتی که بنده پیگیر آموزش های اکسس هستم( قریب دوسال)، خاک همه سایت هایی که در این زمینه فعالیت دارند الک کردم، انصافا هیچ سایت و استادی چه در زمینه آموزش ها و چه در زمینه پروژه ها به گرد پای شما نرسیده و نمیرسه ، اینو گفتم چون چیزهای زیادی از شما یاد گرفتم و در این زمینه مدیون شما هستم ، خداوند هر آنچه که خیر است را سر راه شما قرار دهد، مخلصانه از شما تشکر میکنم و امیدوارم راهتون را با قدرت ادامه بدهید

  • با سلام و درود و تشکر ویژه از زحمات شما، در تابع AddMonth با برج ۱۲ ایراد وجود دارد مثلا اگر به تاریخ ۱۴۰۰.۱۲.۰۱ تعداد ۱۲ ماه یا ۲۴ ماه یا مضربی از ۱۲ اضافه شود جواب تابع برای ۱۲ ماه ۱۴۰۲.۰۰.۰۱ بدست می آید، لطفا بررسی نمایید، با تشکر

    • سلام و درود استاد عزیز، ظاهرا مشغله کاری استاد زیاد شده که با گذشت قریب دو ماه از گزارش مشکل (تابع AddMonth) تاکنون پاسخی داده نشده، باز هم سپاسگزارم بابت آموزش های خیلی خوبتون

  • با سلام و تشکر مجدد از زحمات شما، مشکل در تابع AddMonth همچنان لاینحل باقیمونده و جوابی داده نشده، تابع فوق با برج ۱۲ ایراد وجود دارد مثلا اگر به تاریخ ۱۴۰۰.۱۲.۰۱ تعداد ۱۲ ماه یا ۲۴ ماه یا مضربی از ۱۲ اضافه شود جواب تابع برای ۱۲ ماه ۱۴۰۲.۰۰.۰۱ بدست می آید، لطفا بررسی نمایید، با تشکر

دیدگاهتان را بنویسید