PDA

View Full Version : نمایش مناسبت تعطیلات ماه های قمری



unforgiven
سه شنبه 25 بهمن 1390, 19:00 عصر
سلام دوستان
1-من نیاز دارم که مناسبت ها رو در تقویم نشون بدم . مناسبت های شمسی چون همیشه ثابت هستند مشکلی نیست ولی مناسبت های قمری بر اساس سال مدام در حال چرخش هستند . چطور می تونم این مناسبت ها رو هم نشون بدم ؟ آیا فرمول خاصی وجود داره ؟
2-به نظر شما بهتره تقویم و مناسبت ها رو در فایل XML ذخیره و بعد بخونم . اگر سورسی در این باره دارید ممنون میشم بذارید
3-من یک تیبل دارم که شامل date و comment هست که کاربر به صورت سالنامه یادداشتی برای روز دلخواهش وارد میکنه . چطور می تونم روزهایی که کاربر در اون روز ها متنی رو وارد کرده بهش نشون بدم . (مثلا رنگش رو عوض کنم)
ممنون میشم اگر راهنمایی بفرمایید

قابل توجه مدیر محترم تالار :
میدونم باید برای هر کدوم از این سوالات یه پست بزنم ولی چون سوالات مرتبط با همین پست بود دلیلی ندیدم البته با اجازه مدیر محترم

skh1300
چهارشنبه 26 بهمن 1390, 10:36 صبح
سلام دوست عزیز
من سال قبل یه تقویم کاملا حرفه ای نوشتم.
به چند نکته دقت کن اول این که تاریخ شمسی را تبدیل به تاریخ قمری کن و در پایگاه داده جست جو کن و اونو پیدا کن
مثال :
همیشه 10 محرم برابر با عاشورا میباشد و این همیشه ثابت است.حالا ما تاریخ شمسی را تبدیل به قمری میکنیم و اگر برابر بود با 10 محرم باید عبارت عاشورا را نشان دهد.من پایگاه داده رو قبلا گذاشتم یه سرچ کن پیدا میکنی.کمکی خواستی در خدمتم.

ali.mousavi
چهارشنبه 26 بهمن 1390, 10:56 صبح
http://barnamenevis.org/showthread.php?325704-%D8%A7%DA%A9%D8%AA%D9%8A%D9%88-DLL-%D8%AC%D8%AF%D9%8A%D8%AF-%D9%85%D8%A8%D8%AF%D9%84-%D8%AA%D8%A7%D8%B1%D9%8A%D8%AE-%D9%87%D8%A7%D9%8A-%D8%B4%D9%85%D8%B3%D9%8A-%D9%88-%D9%82%D9%85%D8%B1%D9%8A-%D9%88-%D9%85%D9%8A%D9%84%D8%A7%D8%AF%D9%8A-Ardata_Date-V-1.0.0

unforgiven
چهارشنبه 26 بهمن 1390, 10:56 صبح
سلام SKH1300
ممنون از توجه شما به این پست .
اتفاقا من قبلا با جستجو فایل شما رو دانلود کرده بودم اما چون ظاهرا فرمتش با اکسس 2010 بود نتونستم بازش کنم از دوستان اگر کسی اکسس 2010 رو سیستمش هست محبت کنه این فایل رو به اکسس 2003 کانورت کنه .
این هم لینک فایل :
http://barnamenevis.org/showthread.php?323508
راستی در مورد سوال سوم هم راهی به نظرتون میرسه ؟
ممنونم

unforgiven
چهارشنبه 26 بهمن 1390, 11:09 صبح
آقای موسوی سلام
لینکی که قرار دادید مربوط به یک Dll هست و من قصد ندارم از Dll یا Ocx در برنامه استفاده کنم .
ضمنا بعضی از این فایل های که من دانلود کردم و تست کردم تو محاسبه مشکل داشتند برا همین استفاده نمی کنم ( البته منظورم اختصاصا این فایلی که شما معرفی کردید نیست - منظورم در حالت کلی هست )
ممنونم

skh1300
چهارشنبه 26 بهمن 1390, 11:12 صبح
دوست عزیز برا پیغام گذاشتن به چند نکته توجه کن
پیغام ها میتونن سالیانه ماهانه هفتگی روزانه باشند
قبل از هر کاری ما یه جدول داریم که اطلاعات تاریخ و پیغام را نگه داری میکند.
سالانه :
کاربر پیغام خود را وارد میکند و بعد شما به تاریخی که در پایگاه داده کاربر ثبت کرده به سال آن (مثال اگه 21/08/1390 باشه به سال آن یک سال اضافه کنی (فقط چهار رقم آخر باید یه واحد اضافه بشه که 1390 میشه 1391 ) بعد از آن تاریخ امروز را با آن تاریخی که بدست آمده مقایسه میکنی و بعد بقیه کارا
مثال:
کاربر 1390/11/12 وارد کرده شما چهار رقم آخر این تاریخ (1390) را از پایگاه میخونی و به آن یک واحد اضافه میکنی و بعد با تاریخ امروز مقایسه میکنی اگه برابر بود که بقیه کارا اگه نبود که هیچی.

1101001
چهارشنبه 26 بهمن 1390, 11:16 صبح
82708

دیتابیس با فرمت 2003

unforgiven
چهارشنبه 26 بهمن 1390, 12:45 عصر
به چند نکته دقت کن اول این که تاریخ شمسی را تبدیل به تاریخ قمری کن و در پایگاه داده جست جو کن و اونو پیدا کن

دوست عزیز من به چه شکل باید تاریخ شمسی رو به قمری تبدیل کنم ؟ فرمول خاصی داره ؟ کدی در این مورد شما داری؟
در مورد نمایش رویداد های کاربر باید بگم که من با یک سلکت تونستم تاریخی رو که داخل جدول ذخیره شده با تاریخ جاری برنامه مقایسه کنم و در صورتیکه شرط درست بود اون یادداشت رو نمایش بدم
مشکل اینجاست که من می خوام کل روزهایی که کاربر در اون تاریخها یادداشتی گذاشته نمایش داده بشه مثلا رنگش عوض بشه
روی فرم من لیبل های ایندکس شده از 0 تا 40 وجود داره که شماره روز ها بر اساس تاریخ سال و ماه در اون درج میشوند .
مثلا :
کاربر در تاریخ 17/11/1390 و در تاریخ 20/11/1390 و 25/11/1390 یادداشت هایی وارد کرده من می خوام کاربر با انتخاب ماه بهمن سال 1390 روز های 17 و 20 و 25 تغییر رنگ داشته باشن که نشون بده یادداشتی در این روز ها وجود داشته .
من تو این قسمت مشکل دارم
SKH1300 لطفا راهنمایی کنید
بازم ممنونم

ASedJavad
چهارشنبه 26 بهمن 1390, 16:20 عصر
سلام
در مورد مناسبت های قمری، به این راحتیا نمیتونی محاسبشون کنی
چون روش محاسبه 30 روزه و 29 روزه بودن ماه قمری، به این راحتیا نیست و به دانش ستاره شناسی نیاز داره
تازه با همه اینها تا حالا دیدی یه ستاره شناس به طور قاطع بگه مثلا اول ماه رمضون چند شنبه است؟
یادمه دکتر ایرج ملک پور یه کتاب چاپ کرده بود (اسمش یادم نیست ولی به نظرم اسمش "تقویم" بود) که توش به طور تقریبی نوشته بود در سال های آینده فلان ماه قمری چند روزه است
به همین خاطر معمولا تقویم های کامپیوتری که در بازار هستن، هر سال مناسبتهای سال جدید رو به عنوان یه فایل اپدیت رو سایتشون قرار میدن

در ضمن شما تو ساخت تقویم به دو سه تا نکته دیگه باید توجه کنی:
1- سالهای کبیسه شمسی (که برخلاف باور رایج، دقیقا هر چهار سال یکبار اتفاق نمیفته بعضی وقتا سه سال یا پنج سال یکبار هم میشه)
2- یه همچین چیزی هم تو تاریخ میلادی داریم
3- دو تا مناسبت قمری (شهادت امام رضا و شهادت امام جواد) در آخر ماهه. یعنی اگه ماه قمری 30 روزه بود، روز سیم و اگه 29 روزه بود روز 29 .

unforgiven
چهارشنبه 26 بهمن 1390, 17:16 عصر
سلام آ سد جواد
با این توضیحاتی که دادید ظاهرا باید بیخیال تقویم قمری بشم . خوب نظر خودم هم همین بود که تقویم سال قمری رو بتونم از فایل بخونم حالا به هر فرمتی مثل XML . نمونه کدی برا خوندن تقویم به این شکل دارید ؟

در مورد سوال سوم هم من این کد رو نوشتم و تونستم بر اساس شماره روز بتونم رنگ لیبل مربوط به اون رو تغییر بدم که نشون بده حاوی یادداشت هست اما مشکل اینه که فقط اولین رکورد رو نشون میده
مشکل این کد کجاست ؟


Rs.Open "Select * From Calendar ", db, adOpenStatic, adLockOptimistic
For i = 0 To Rs.RecordCount - 1
If Rs.RecordCount > 0 Then
For index = 0 To 38
If Lbl(index).Caption = Rs!days Then
Lbl(index).backcolor = vbred
End If
Next
End If
Next
Rs.Close

متشکرم

ASedJavad
چهارشنبه 26 بهمن 1390, 19:52 عصر
اگه احیانا اهل مشهدی تو کتابخونه آستان قدس کتابی رو که گفتم داره

unforgiven
چهارشنبه 26 بهمن 1390, 20:00 عصر
سلام
تونستم مشکل شماره 3 رو هم با کد While not حل کنم .
متشکرم
اما اگه کسی سورسی برای خوندن تاریخ از فایل XML داشت خواهش می کنم دریغ نکنه

skh1300
چهارشنبه 26 بهمن 1390, 21:12 عصر
SKH1300 لطفا راهنمایی کنید
بازم ممنونم
دوست عزیز این کدی که برای نمایش رنگ لیبل استفاده میکنی واقعا تو یه سیستم کوچیک سرعت میگیره تو بیا از توابع Left,Right,Mid استفاده کن بدین صورت تاریخ را از دیتابیست بگیر مثلا دو رقم اولش بدست بیار حالا با سایر لیبل ها مقایسه کن.
همون جور که دوستمون گفتن محاسبه تاریخ قرمی بدین سادگی هم نیست یه Dll تو سایت هست که این کار تبدیل را انجام میده .من االان به Dll دسترسی ندارم بگرد اگه پیدا نکردی برات میذارم.ولی بگردیا :چشمک:
به نظر من تاریخ قمری را با کمک کاربر تنظیم کن

unforgiven
پنج شنبه 27 بهمن 1390, 00:19 صبح
دوست عزیز من دقیقا همین کارو کردم که مشکل حل شد با mid تاریخ رو جدا کردم و با تاریخ جاری مقایسه کردم . در واقع غیر از این هم راهی وجود نداشت .
ممنون از راهنمایی های همگی
حالا مونده خواندن تاریخ از فایل XML یا چیزی مشابه اون که بتونم مناسبت های قمری و تاریخ اونها رو توش ذخیره کنم و بعد فراخوانی کنم . تو این قسمت هم اگر سورسی یا کدی هست ممنون میشم بزارید

SlowCode
جمعه 28 بهمن 1390, 00:10 صبح
حالا چرا گیر دادین به xml؟ می تونید از txt یا اکسس و ... هم استفاده کنید!

unforgiven
جمعه 28 بهمن 1390, 13:23 عصر
سلام
فرمت XML واسه این میگم که تو خیلی از برنامه قابلیت ایمپورت اون وجود داره
حالا شما با همون فرمت TXT هم اگه نمونه داری بذارید ؟

skh1300
جمعه 28 بهمن 1390, 21:22 عصر
سلام
فرمت XML واسه این میگم که تو خیلی از برنامه قابلیت ایمپورت اون وجود داره
حالا شما با همون فرمت TXT هم اگه نمونه داری بذارید ؟

سلام خب اطلاعات را در پایگاه داده ات بریز هر جا دوست داشتی وصل شو اطلاعات بگیر.تو فایل متنی و xml نریز سرعت جست جو پایین هست اگه بانکت اراکل یا sql باشه بهتزه.

unforgiven
شنبه 29 بهمن 1390, 12:56 عصر
سلام
تو بانک که به دلایلی نمیشه بریزم
بخاطر شناور بودن تعطیلات قمری می خوام این تعطیلات رو تو یه فایل حالا با هر فرمتی ذخیره کنم و هر سال با توجه به تقویم آپدیتش رو برای کاربرا بزارم . این همون کاری هست که خیلی از برنامه یی رو که دیدم ازش استفاده کردن
از توجه همگی به این پست متشکرم

ASedJavad
شنبه 29 بهمن 1390, 15:16 عصر
سلام
من یخورده گیراییم کمه!
میتونی دقیق توضیح بدی مشکلت چیه؟

unforgiven
شنبه 29 بهمن 1390, 21:34 عصر
سلام


من یخورده گیراییم کمه!

آقا نفرمایید این چه حرفیه
دوستان مشکل حل شد ممنونم