کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی
کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

کلینیک فوق تخصصی اکسس ( کاربرد vba در اکسس )

به اشتراک گذاری اطلاعات کسب شده در اکسس از سایت آفیس و سایت های تخصصی خارجی

تاریخ قمری




سرآغاز گاه‌شماری هجری قمری روز جمعه «۱ محرم سال ۱ هجری قمری» (۲۷ تیر سال ۱ هجری خورشیدی) برابر با ۱۶ ژوئیه ۶۲۲ میلادی قدیم (ژولینی) و ۱۹ ژوئیه ۶۲۲ میلادی جدید (گریگوری) است.[۸]



گاه‌شماری هجری قمری قراردادی یا حسابی یا رسمی به‌عنوان گاه‌شماری قمری یکنواخت در سطح جهان شناخته شده‌است. در این گاه‌شماری از روش محاسباتی خطی و غیرتجربی برای تقریب زدن طول ماه‌های قمری استفاده می‌شود. ماه‌های قمری در آن به‌طور متناوب ۳۰ روزه (ماه‌های فرد) و ۲۹ روزه (ماه‌های زوج) در نظرگرفته می‌شود و در هر سی سال، ۱۱ سال، با ۳۰ روزه کردن آخرین ماه (ذیحجه) کبیسه می‌شود. بر اساس کبیسه‌گیری رایج در یک دورهٔ سی‌ساله، سال‌های متوالی ۲، ۵، ۷، ۱۰، ۱۳، ۱۶، ۱۸، ۲۱، ۲۴، ۲۶، ۲۹ طول سال به صورت کبیسه (۳۵۵ روزه) است، یعنی چنانچه باقی‌مانده حاصل تقسیم سال قمری به عدد ۳۰ یکی از اعداد مذکور باشد آن سال کبیسه‌است؛ و در نوزده سال دیگر طول سال عادی (۳۵۴ روزه) می‌باشد.[۱۳][۱۴] با توجه به خطی و قراردادی بودن محاسبه این گاه‌شماری نسبت به سال قمری حقیقی (برابر  ۳۵۴.۳۶۷۰۸ روز) طی حدود ۲۴۱۹ سال یکبار به اندازهٔ یک روز نیاز به تصحیح دارد.[۱۵]



روزهای همۀ ماه‌های قمری با هم برابر و دقیقاً 29 روز و 12 ساعت و 44 دقیقه و 3 ثانیه یا 53059028/29 روز است. همچنین ماه‌های همۀ سال‌های قمری با هم برابر و دقیقاً دوازده ماه و برابر با 3670834/354 روز است. اما برای سهولت محاسبات هر سال قمری را 354 روز در نظر می‌گیرند، بدین جهت در یک سال، 6 ماه سی روزی و 6 ماه 29 روزی وجود دارد.

برای جبران کسری سال، هر سه سال یکبار، یک روز اضافه می‌شود؛ یعنی سال سوم 355 روز خواهد بود؛ چرا که مقدار کسری در سه سال، 3670834/0× 3 یا برابر 101/1 روز می‌شود.

نتیجه‌ی مهمی که این محاسبه دارد و نباید از آن غفلت نمود، «قاعده یک در میان» است؛ یعنی در سال قمری، ماه‌‌ها یک در میان 30 و 29 روز، هستند.






باتوجه به اینکه شروع هرماه قمری طبق رصد هلال ماه انجام میشه پس دنبال تبدیل دقیق میلادی به قمری نباشید طبق روش قراردادی می توانید پیش بروید آما در بعضی سال ها ممکن است آن روزی که باید باشد نشود ( چون برنامه نوشته شده شما رصد هلال بلد نیست )



در تصویر بالا 11 دسامبر سال 2028 را برابر 24 رجب 1450 قرار داده.

7/19/622=1/1/1 محرم

12/11/2028

datediff

Diff=513677


در جستجوی گوگل می توانید فرمول زیر برای تبدیل سال میلادی به قمری را بیابید.

H=G-622+(G-622)÷32

H=2028-622+(2028-622)÷32=1449.9375~1450


Jalali:1300/06/20

Hijri : 1340/01/08 محرم

G(MM/DD/YYYY) : 9/11/1921

Diff :  474504



جمعه ۱۳۹۱/۸/۲۶ معادل یک محرم(۱) سال ۱۴۳۴ و ۱۱/۱۶/۲۰۱۲ ( ۱۶ نوامبر)


۱۴۰۰/۶/۲۰ (۹/۱۱/۲۰۲۱:MM/DD/YYYY)

۱-بدست آوردن اختلاف روزهای دو تاریخ شمسی

سال ۱۳۹۱ کبیسه است

-تعداد روزها : از ۱۳۹۱/۸/۲۶ تا آخر سال ۱۳۹۱

۳۰+۳۰+۳۰+۳۰+۳۰-۲۶=۱۲۴

Jalali Leap Years:

۱۳۷۹، ۱۳۸۳، ۱۳۸۷، ۱۳۹۱، ۱۳۹۵، ۱۳۹۹، ۱۴۰۳، ۱۴۰۸

-تعداد روزهای ۱۳۹۲تا ۱۳۹۹ را محاسبه می کنیم بین ۱۳۹۱ تا ۱۳۹۹ تنها ۲ سال کبیسه داریم:

۱۳۹۹-۱۳۹۲+۱=۸×۳۶۵+۲=۲۹۲۲

در بالا چون سال ۹۵و۹۹کبیسه بود اختلاف ۳۶۶و۳۶۵ را برای دوسال که عدد ۲ میشد را در نظر گرفتیم.

-تعداد روزها از اول سال ۱۴۰۰ تا ۱۴۰۰/۰۶/۲۰ :

۵×۳۱+۲۰=۱۷۵


-۳ عدد بدست آمده بالا را با هم جمع می کنیم

۱۲۴+۲۹۲۲+۱۷۵=۳۲۲۱

SELECT DateDiff("d", #11/16/2012#, #09/11/2021#);3221


در تصویر زیر از آغاز تا پایان را ذکر کرده ولی در DateDiff اکسس اختلاف بین دوتاریخ را... توجه کنید که این دو باهم فرق دارند!!!




کبیسه قمری : 

سال Mod 30=2,5,7,10,13,16,18,21,24,26,29


تاریخ قمری ۱/۱/۱۴۳۴ ( ۱۳۹۱/۸/۲۶ )

اضافه کردن عدد ۳۲۲۱ به آن ( ۳۲۲۲ در باحساب)

سال های ۱۴۳۴ ، ۱۴۳۶ ، ۱۴۳۹ ، ۱۴۴۲ کبیسه هستند البته طبق فرمول بالاتر

اگر اختلاف رو ۳۲۲۲ بگیریم و نه ۳۲۲۱ معادله تابع اکسس داریم : 

۳۲۲۱-(۳۵۵-۱)-۳۵۴-۳۵۵-۳۵۴-۳۵۴-۳۵۵

-۳۵۴-۳۵۴-۳۵۵=۳۳


نتیجتا مشخص شد که تبدیل بر اساس تقویم هلالی است و نه قراردادی چون محرم سال ۹۱ بیست و نه روزه است در صورتیکه طبق تقویم قراردادی روزهای فرد ۳۰ روزه و روزهای زوج ۲۹ روزه در نظر گرفته میشود و ماه ۱۲ قمری در سال کبیسه ۳۰ روزه محاسبه می شود.


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


۱۳۹۱/۸/۲۶ طبق تقویم آن زمان اول محرم است ولی تبدیل زیر ۲ محرم را نشان می دهد چرا که طبق تقویم قراردادی است و نه هلالی

tabdil




حالا خودتون قضاوت کنید 
















تبدیل میلادی به قمری

گاهی محاسبات بهم میریزد مثل ۷ خرداد ۱۳۹۸ که باید ۲۳ رمضان باشد ولی ۲۲ رمضان میشود چون ماه قبلی ۳۰ روزه شده  ....  


آیتم اول را اگر به ترتیب از اولین ماه قمری که 30  هست و یک درمیان 29 میشود کم کنیم تا مانده از تعداد روزهای ماه کوچکتر شود عدد 23 حاصل میشود 

2593029302930293029=23 

در این مثال می توان در ماژول نوشت اگر سال ۱۴۴۰ شد جای تعداد روزهای ماه ۸ و ماه ۹ قمری جابجاشوند تا ۲۳ رمضان به ۲۲ رمضان تبدیل شود

510,192+11,440×354528+354=259

508,161+11,434×354526+355=355

508515+1-1435×354-526+354=354

495323+1-1398×354-513+355=274

506627+1-1430×354-524+354=237

506714+1-1430×354-524+354=325

506393+1-1429×354-524=4

508870+1-1436×354-527+355=355

506743+1-1430×354-524+354=354

505,326+11,426×354523+355=355


در مثال های بالا

عدد اول اختلاف 19 جولای 622  شروع قمری و  تاریخ میلادی۱موردنظر است که به ترتیب 28 می 2019 ، 4  نوامبر 2013 ، 24 اکتبر 2014 ،11 سپتامبر  1978 ،23 اوت 2009 ، 18 نوامبر 2009 ، 1 ژانویه 2009 ، 14 اکتبر 2015 و 17 دسامبر 2009  ، 30 ژانویه 2006 می باشد


عدد دوم  : یک واحد به اختلاف اضافه می شو

 عدد سوم : حاصل ضرب 354 در ( تقسیم  جمع عدد اول و دوم

 (بر354  منهای یک است

عدد چهارم : تعداد کبیسه ی سپری شده تا عدد سوم است.

اگر عدد نهایی کوچکتر مساوی صفر شد اگر عدد سوم که سال است کبیسه بود با 355 اگر نه با 354 جمع میشود ، اگر عدد نهائی بزرگتر از صفر بود که یک واحد به سال اضافه میشود و ماه هم یک و یا بالاتر .

در جائی که عدد 354 یا 355 اضافه نشده یعنی عدد مثبت شده


لینک محاسباتhttps://keisan.casio.com/exec/system/1346122065   ذهنتون رو در گیر نکنید چون قمری هم قائده ی خاصی ندارد و دقیق ترین محاسبه باید نجومی باشد که  آنهم نمیشود مال چند 

سال دیگر را حدس زد


برای تبدیل شمسی به قمری تنها کافیه اختلاف تاریخ شمسی موردنظر تا تاریخ ۱/۱/۱ شمسی  را بدست آوردید و منهای ۱۱۹  

کنید  (  اختلاف ۲۷ تیر یک شمسی تا ۱ول  قمری ۱۱۹ است

فرضا اختلاف ۱ شمسی تا ۸ خرداد ۹۸ عدد ۵۱۰۳۱۲ عدد ۱۱۹ را که از آن کم کنیم میشود همان عدد ۵۱۰۱۹۳ و طبق مثال های بالا عمل 

میکنیم 

 : آرایه  

1 : 29 ,  2 : 59 , 3 : 89 , 4 : 118 , 5 : 148 , 6 : 177 , 7 : 207 

8 : 236 , 9 : 266 , 10 : 295 , 11 : 325 , 12 : 354 

اگر سال کبیس شد ماه آخر در آرایه یعنی ۱۲ به ۳۵۵ تغییر می یابد

: معادله

510,193+11,440×354528+354=260


چون سال ۱۴۴۰ قمری محاسبات را بهم زد و فرضا بجای ۲۳ رمضان ۲۲ رمضان شد در نتیجه در بالا می توانیم ا عداد ۸ و ۹ را عوض  کنیم  ( آرایه ی بالا  ) در مورد ۲۶۰ در حالت عادی وقتی از ۲۳۶ کم می کنیم  عدد روز قمری ۲۴ در می آید که طبق تغییرات در ماه قبل رمضان این روز ۲۳ رمضان خواهد شد نتیجتا باید در ماژول بنویسیم اگر سال ۱۴۴۰ قمری شد عدد ۸ به۲۳۷ و عدد ۹ به۲۶۵ تغییر یابد که اگر بدین منوال اقدام شود اختلاف عدد ۲۶۰ بدست 

آمده و عدد۸ که  ۲۳۷ شده  ۲۳ می شود.

طبق تصویر پائین ماه های قمری ترتیب خاصی ندارد

تبدیل میلادی به قمری


19 جولای سال 622  شروع تاریخ قمری است و مصادف با 27 تیر سال یک شمسی 

Dim D(12) As Long

D(1)=30 : D(2)=59 : D(3)=89 : D(4)=118 : D(5)=148  D(6)=177 : D(7)=207 : D(8)=236 : D(9)=266 : D(10)=295 : D(11)=325 : D(12)=354

یک در میان ماه ها ی قمری را بصورت قراردادی 29 مشخص کرده اند یعنی ماه اول که محرم است 30 روز و ماه بعدی 29  و با این منوال ماه های فرد را 30 روز و ماه های زوج را 29 روزه گرفته اند و در صورت کبیسه بودن سال طبق جدول ، روش رایج در گاه شمار قراردادی ماه آخر بجای 29 روزه 30 روزه در نظر خواهند گرفت.


در رایج‌ترین تقویم هجری قمری حسابی طی یک دوره سی ساله کبیسه منظم از قرار زیر محاسبه شده‌است:
بر اساس این کبیسه‌گیری، چنانچه باقی‌ماندهٔ حاصل تقسیم سال قمری به عدد ۳۰ یکی از اعداد (۲، ۵، ۷، ۱۰، ۱۳، ۱۶، ۱۸، ۲۱، ۲۴، ۲۶ و ۲۹) باشد، سال مذکور کبیسه و طول آن (۳۵۵ روزه) می‌باشد.


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


18 ژانویه سال 624 معادل 27 دی سال 2 ، اختلاف با تابع DateDiff اکسس بین  19 جولای 622 که شروع قمری است  تا تاریخ 18 ژانویه ی 624 موردتبدیل ما 549 روز است  که یک واحد به آن اضافه می کنیم .


در اینجا 550  از 354 بزرگتر است پس  D12 را از آن کم میکنیم میشود 195 و سال هم  بالطبع یک واحد بدان اضافه شده و 2 خواهد شد  ،  طبق آرایه ی بالا 195 بین D6 و D7 است پس کوچکتر از عدد 195 را انتخاب میکنیم  177-195 که میشود 18 ( روز )   و  عدد آرایه ی  177  6 است که آنرا باضافه ی یک می کنیم که ماه عدد 7 می شود


بنابراین سال شد 2 ماه  7 و روز هم 18 


2/4/14  -  6 جولای 623  و  28 ذی الحجه سال  ۱ قمری ، 352

2/4/15  -  7 جولای 623  و  29 ذی الحجه سال  ۱ قمری ، 353

2/4/16  -  8 جولای 623  و  1 محرم سال  2 قمری ، 354

2/4/17  -  9 جولای 623  و  2 محرم سال 2 قمری ، 355



۱۲ تیر سال ۵ شمسی معادل ۴ جولای ۶۲۶ و ۳۰ محرم (۱) سال ۵ ... اختلاف ۱۴۴۶ روز 

۷ تیر سال ۵ شمسی معادل ۲۹ جون ۶۲۶ و ۲۵ محرم (۱) سال ۵ ... اختلاف ۱۴۴۱


۲۷ تیر سال یک شمسی آغار سال قمری و ۱۹ جولای ۶۲۲ آغاز سال قمری اختلاف ها با DateDiff

                                     

1446=("Dif=DateDiff("n","7/19/622","7/4/626

Ret=Dif=1446+1=1447

 ( If 1447>354 (True

Y=2 Ret=1447-354=1093

 ( If 1093>354 (True

2=Kabiseh Y=3 Ret=1093-355=738

( If 738>354 (True

3=NoKabiseh Y=4 Ret=738-354=384

( If 384>354 (True

4=Nokabiseh Y=5 Ret=384-354=30

(If 30>354 (False

(If Ret=D(1) , M=۰ : Ret=D(1

If Ret<D(1) , M=۰ : Ret=D(1)-Ret

 ...   If

  ...   If

M=M+1

تا زمانی لوپ ادامه می یابد که Ret کوچکتر مساوی (D(M شود

Ret=30 , M=1

Year : 5  , M : 1 , D : 30 

۳۰ محرم سال ۵