PDA

View Full Version : مشكل در تبديل تاريخ ميلادى به خورشيدى



MahdiSanei
چهارشنبه 02 دی 1388, 11:35 صبح
سلام.
من يك برنامه‌ى اكسس دارم كه گزارش كارهاى تعميراتى محل كارم رو در اون وارد مى‌كنم. حدود چهار ماهى هست كه دارم از اين بانك استفاده مى‌كنم. تا كنون همه تاريخها بر حسب ميلادى وارد شدند. آيا راهى هست كه هم از اين پس بتونم تاريخها رو برحسب سال خورشيدى وارد كنم و هم بتونم تاريخهاى قبلى رو به خورشيدى تبديل كنم.
من روش آقاى حميد آزادى رو آزمايش كردم ولى جواب نگرفتم. البته به احتمال زياد به دليل اطلاعات كم من در مورد برنامه‌نويسى و اكسس باشه.
بانك موردنظر رو در آدرس زير مى‌تونيد ببينيد.
http://barnamenevis.org/forum/showthread.php?t=193339

dadsara
چهارشنبه 02 دی 1388, 13:27 عصر
سلام
دوست عزیز فایلهای جنابعالی باز نمی شود
فایل که جناب پیروزمهر نیز آپلود کرده فاقد جدول می باشد

mehdi_fiz
چهارشنبه 02 دی 1388, 14:39 عصر
سلام آقای dadsara عزیز

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

موفق باشید

dadsara
چهارشنبه 02 دی 1388, 14:50 عصر
سلام
30 جدول در برنامه شما موجود است کدام جدوا مورد نظر جنابعالی می باشد

alisaeed29
پنج شنبه 03 دی 1388, 08:04 صبح
باعرض سلام
من یک ماژول تبدیل تاریخ شمسی به میلادی دارم با نام(farsi-date )این ماژول را درقسمت
moduels برنامه accsess خود کپی نمایید سپس در هرقسمت از فرم یا ریپورت که
control source فیلد را مساوی (0)fdat=قرار دهید فیلد تاریخ روز سیستم رابه شما خواهد داد امیدوارم مورد استفاده قرار گیردsaeed29

alisaeed29
پنج شنبه 03 دی 1388, 08:24 صبح
با سلام خدمت دوستان
برای فارسی کردن پیامهای سیستم در برنامه accsess درصورت امکان راهنمایی فرمایید باتشکر
alisaeed29

parsa faza
جمعه 04 دی 1388, 13:05 عصر
باعرض سلام
من یک ماژول تبدیل تاریخ شمسی به میلادی دارم با نام(farsi-date )این ماژول را درقسمت
moduels برنامه accsess خود کپی نمایید سپس در هرقسمت از فرم یا ریپورت که
control source فیلد را مساوی (0)fdat=قرار دهید فیلد تاریخ روز سیستم رابه شما خواهد داد امیدوارم مورد استفاده قرار گیردsaeed29

با عرض سلام خدمت شما دوست عزیز ونهایت تشکر از این کار بسیار خوب و زیباتون
واقعا باید بگم که عالی بود :تشویق:
اما من دو مشکل دارم : اولیش که خیلی هم برام مهم این control source فقط میشه در یک فیلد TEXT گذاشت و در یک فیلد NUMBER یا DATE/TIM کار نمیکنه واز اونجا که به محاسبات در تاریخ نیاز دارم با مشکل مواجه میشم
دوم اینکه داخل پرانتز (0)fdat= هر تاریخ یا هر فیلدی که میدم بازم خروجیش همون تاریخ سیستم هست
ممنون میشم راهنماییم کنید :متفکر:
راستی در مورد فارسی کردن پیامها بعید میدونم به این راهتی بشه کاری کرد مگر که در TABLE پیامی را در TEXT VALIU برای فیلدت به فارسی تایپ کنی یادر SQL یک مسیج باکس برای پیغام مورد نیازت تعریف کنی
البته من زیاد وارد نیستم و اینهارو حدودی میدونم:لبخند:

parsa faza
جمعه 04 دی 1388, 15:16 عصر
سلام خدمت دوستان عزیز
من چندتا کد پیدا کردم که فقط کافیه در باکس مورد نظر کپی بشن تا در نمای ویو تاریخ مورد نظرو ببینیم
روی این کدها خیلی کارا میشه کرد در فیلد نامبر هم به راهتی قبول میشه فقط من با کد ماه مشکل دارم کمی هم باهاش ور رفتم ول گفتم بزارمشون اینجا تا دوستان هم کمی روشون کار کنن بلکه زودتر جواب بگیریم
ممنون میشم همکاری وکمک کنین :افسرده:

کد بهدست آوردن سال:
=Right(Str(Int((Date()-7385)/365.25)+1299);4)
کد بهدست آوردن ماه:

=IIf(((IIf(Int((((Date()-7385)*100) Mod (36525))/100)<186;Int(Int((((Date()-7385)*100) Mod (36525))/100)/31);IIf(((Int((Date()-7385)/365.25)) Mod (4))=0;Int((Int((((Date()-7385)*100) Mod (36525))/100)-186)/30)+6;IIf(Int((((Date()-7385)*100) Mod (36525))/10

کد بهدست آوردن روز:

=IIf(IIf(Int((((Date()-7385)*100) Mod (36525))/100)<186;((Int((((Date()-7385)*100) Mod (36525))/100)) Mod (31))+1;IIf(((Int((Date()-7385)/365.25)) Mod (4))=0;((Int((((Date()-7385)*100) Mod (36525))/100)-186) Mod (30))+1;IIf(Int((((Date()-7385)*100) Mod (36525))/100)<336;((Int((((Date()-7385)*100) Mod (36525))/100)-186) Mod (30))+1;((Int((((Date()-7385)*100) Mod (36525))/100)-336) Mod (29))+1)))<10;"0" & Right(Str(IIf(Int((((Date()-7385)*100) Mod (36525))/100)<186;((Int((((Date()-7385)*100) Mod (36525))/100)) Mod (31))+1;IIf(((Int((Date()-7385)/365.25)) Mod (4))=0;((Int((((Date()-7385)*100) Mod (36525))/100)-186) Mod (30))+1;IIf(Int((((Date()-7385)*100) Mod (36525))/100)<336;((Int((((Date()-7385)*100) Mod (36525))/100)-186) Mod (30))+1;((Int((((Date()-7385)*100) Mod (36525))/100)-336) Mod (29))+1))));1);Right(Str(IIf(Int((((Date()-7385)*100) Mod (36525))/100)<186;((Int((((Date()-7385)*100) Mod (36525))/100)) Mod (31))+1;IIf(((Int((Date()-7385)/365.25)) Mod (4))=0;((Int((((Date()-7385)*100) Mod (36525))/100)-186) Mod (30))+1;IIf(Int((((Date()-7385)*100) Mod (36525))/100)<336;((Int((((Date()-7385)*100) Mod (36525))/100)-186) Mod (30))+1;((Int((((Date()-7385)*100) Mod (36525))/100)-336) Mod (29))+1))));2))

nabeel
شنبه 05 دی 1388, 12:37 عصر
سلام MahdiSanei

در بخش زیر شما فیلمی رو ملاحظه میکنید که پروسه تغییر رو برای یکی از جداول به شما نشون میده
توضیح : این پروسه تغییر بر اساس توابع مبدل تاریخ موجود در اکتیو ایکس PDC پیاده سازی شده

گو اینکه به نظر میاد شما باید خیلی بخشها رو تغییر بدید و در داخل فرمها هم هر جایی که نوع داده رو Short Date تعریف کردید , اون رو هم تغییر بدید

موفق باشید

dadsara
دوشنبه 07 دی 1388, 09:40 صبح
سلام
این نمونه اصلاح و تبدیل شده تاریخها

alisaeed29
چهارشنبه 09 دی 1388, 09:42 صبح
با سلام
فایل نمونه ضمیمه می باشد شما می توانید در فرم bedihe 1 نحوه محاسبات تاریخ را مشاهده کنید(در command on clik) محاسبه بدهی)