ورود

View Full Version : سوال: کد یا ماژول برای اصلاح تاریخ شمسی که از قبل وارد شده است



abdoreza57
دوشنبه 29 شهریور 1389, 16:21 عصر
سلام دوستان
در نمونه پیوست اطلاعاتی که به فرم وارد شده است بعلت استفاده از آفیس MRT که دارای مبدل تاریخ شمسی است ثبت شده اما مشکل آنجاست که با باز کردن این فایل در یک اکسس قانونی یا هر آفیس به جز MRT متاسفانه تاریخ به میلادی بر میگردد
حال برای اصلاح اگر از هر ماژول یا تغییر در نوع فیلد استفاده کنم اطلاعات به صورت آنچه وارد کرده بودم بر نمیگردد و همچنان میلادی است !!!!!




چون اگر بخواهم تاریخ را به صورت text یا number در آورم امکان تبدیل تاریخهای قبل به شمسی چه میشود در ضمن ورود اطلاعات جدید باید به چه صورت انجام گیرد ؟
از مدیران محترم و دوستان حرفه ای خواهش می کنم مرا در این مهم یاری کنند

dadsara
دوشنبه 29 شهریور 1389, 17:00 عصر
سلام
با استفاده از تابع Miladi_To_Shamsi می توانی این عمل را انجام دهی
یک نمونه در فایل پیوست موجود است

abdoreza57
دوشنبه 29 شهریور 1389, 22:45 عصر
dadsara عزیز سلام
همون طور که گفتم برای اصلاح تاریخ شمسی که از قبل وارد شده است مشکل دارم و تابعی که معادل شمسی تاریخ میلادی را در آورد مد نظر من نیست


چون در این صورت کاربر می بایست تاریخ را کلا به صورت میلادی وارد کند و ما در یک تکست باکس معادل شمسی آن را مشاهده کنیم به نظر شما این کار چه فایده ای دارد ؟
در ضمن این مسئله مهم است که بدانم باید ویژگی فیلد های تاریخ را تغییر بدهم یا نه ؟

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

دوستان خواهش می کنم اگر کسی راهی بلده برام اصلاحش کنه و یه توضیح که بقیه هم استفاده کنند

amirzazadeh
سه شنبه 30 شهریور 1389, 07:35 صبح
dadsara عزیز سلام
همون طور که گفتم برای اصلاح تاریخ شمسی که از قبل وارد شده است مشکل دارم و تابعی که معادل شمسی تاریخ میلادی را در آورد مد نظر من نیست


چون در این صورت کاربر می بایست تاریخ را کلا به صورت میلادی وارد کند و ما در یک تکست باکس معادل شمسی آن را مشاهده کنیم به نظر شما این کار چه فایده ای دارد ؟
در ضمن این مسئله مهم است که بدانم باید ویژگی فیلد های تاریخ را تغییر بدهم یا نه ؟

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

دوستان خواهش می کنم اگر کسی راهی بلده برام اصلاحش کنه و یه توضیح که بقیه هم استفاده کنند
سلام
دوست من
پيشنهاد من افزودن يك فيلد جديد از نوع عددي به جدول موردنظر براي ورود تاريخ هست بقيه مراحل رو هم كه جناب dadsara توضيح دادند و در نهايت بعد از تبديل تاريخ ميلادي و ذخيره اون در فيلد جديد ميتونين فيلد قبلي رو حذف كنيد.(در ضمن پيشنهاد خودتون عملي نيست چون فيلد شما از نوع تاريخ هست در صورتيكه ماژول هاي مبدل از نوع عددي استفاده ميكنند).

Private Sub convert_Click()
Dim x As Date
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("select * from asli", dbOpenDynaset)
Do Until rs.EOF
If Not IsNull(rs.Fields("date_pay")) Then
x = rs.Fields("date_pay")
rs.Edit
rs.Fields("datefa") = Shamsi(x)
rs.Update
End If
rs.MoveNext
Loop
rs.close
End Sub.......................
موفق باشيد

shpegah
سه شنبه 30 شهریور 1389, 13:06 عصر
به نظر من هميشه بايد در بانك بايد فيلد تاريخ استفاده كرد ودرآن تاريخ ميلادي ريخت اگر تاريخهاي قبلي شما در فايل تكست است آبتدا همه را تبديل به تاريخ درست ميلادي كنيد اگر درست نيست سپس نوع فيلدتان را تاريخ كنيد ويا در يك فيلد جديد كه تاريخ است كپي كنيد سپس براي ديتاهاي جديد شمسي بخوانيد ولي ميلادي بريزيد چون مطمئنا يك روز نياز پيدا خواهيد كرد روي تاريخها محاسبات انجام دهيد واين كار باتوابع مايكروسافت مطمئن تر است چون يكسري استثناها وجوددارد كه ممكن است در نظر نگرفته باشيم

abdoreza57
سه شنبه 30 شهریور 1389, 21:39 عصر
واقعا ممنون
اين يك روش كاملا درست و مطمئن بود ولي نميدونم چرا موقع قرار دادن مقدار پيش فرض در اين فيلد ايراد ميگيرد اگر بخواهم تاريخ سفارش را به صورت پيش فرض تاريخ جاري باشد چكار كنم


amirzazadeh (http://www.barnamenevis.org/forum/member.php?u=47888) عزيز اگر راهي هست لطف كن اين مورد را در فايل ضميمه اصلاح كن با يه توضيح مكفي ...
قبلا از اينكه لطف كردي و تو چند پست مرا از راهنمايي هاي خوبت بهره مند نمودي ممنونم

دوستاني كه در مورد نقل قول shpegah (http://www.barnamenevis.org/forum/member.php?u=153021) " به نظر من هميشه بايد در بانك بايد فيلد تاريخ استفاده كرد ودرآن تاريخ ميلادي ريخت " اگر فكر ميكنيد خوبه توضيح كاملي بدهند ممنون ميشم
فكر ميكنم لزومي به اين كار نيست چون مازولي كه تو اين سايت بارها تست شده چرا بايد ما را دچار ترديد نمايد مگر قرار است چه رابطه مهمي بين فيلدها برقرار باشد كه به وسيله كد نويسي مقدور نميشود ؟؟؟

dadsara
چهارشنبه 31 شهریور 1389, 07:32 صبح
سلام
با استفاده از تابع معرفی شده و همچنین Update می توانی مشکل خود را حل کنی
در نمونه پیوست به جدول NEW که از روی جدول جنابعالی کپی گرفته شده و همچنین Query1 نگاه کنید

amirzazadeh
چهارشنبه 31 شهریور 1389, 07:40 صبح
واقعا ممنون
اين يك روش كاملا درست و مطمئن بود ولي نميدونم چرا موقع قرار دادن مقدار پيش فرض در اين فيلد ايراد ميگيرد اگر بخواهم تاريخ سفارش را به صورت پيش فرض تاريخ جاري باشد چكار كنم


amirzazadeh (http://www.barnamenevis.org/forum/member.php?u=47888) عزيز اگر راهي هست لطف كن اين مورد را در فايل ضميمه اصلاح كن با يه توضيح مكفي ...
قبلا از اينكه لطف كردي و تو چند پست مرا از راهنمايي هاي خوبت بهره مند نمودي ممنونم

دوستاني كه در مورد نقل قول shpegah (http://www.barnamenevis.org/forum/member.php?u=153021) " به نظر من هميشه بايد در بانك بايد فيلد تاريخ استفاده كرد ودرآن تاريخ ميلادي ريخت " اگر فكر ميكنيد خوبه توضيح كاملي بدهند ممنون ميشم
فكر ميكنم لزومي به اين كار نيست چون مازولي كه تو اين سايت بارها تست شده چرا بايد ما را دچار ترديد نمايد مگر قرار است چه رابطه مهمي بين فيلدها برقرار باشد كه به وسيله كد نويسي مقدور نميشود ؟؟؟
سلام
در نماي طراحي فرمت در مقابل مقدار پيش فرض فيلد مربوطه اين عبارت رو وارد كنيد.

shamsi(Date())
........................
موفق باشيد

shpegah
چهارشنبه 31 شهریور 1389, 08:06 صبح
[B]
فكر ميكنم لزومي به اين كار نيست چون مازولي كه تو اين سايت بارها تست شده چرا بايد ما را دچار ترديد نمايد مگر قرار است چه رابطه مهمي بين فيلدها برقرار باشد كه به وسيله كد نويسي مقدور نميشود ؟؟؟

متاسفانه بايد بگم دوست عزيز كه درمورد تاريخ حداقل گفته شما صدق نميكند چون قوانيني براي تاريخ حاكم است كه در طي چندين سال صحت وسقم يك الگوريتم مشخص ميگردد مثلا همه ميدانيم هر جهار سال يك سال كبيسه است ولي آيا ميدانيد پس از هر چند سال سال كبيسه به جاي چهار سال بعد از پنج سال ميشود وآيا مبدا آن با ميلادي چقدر اختلاف دارد ؟ شايد شخص شمابدانيد ولي آيا در توابع مطمئن هستيد كه رعايت شده؟

sajjad_kochekian
چهارشنبه 31 شهریور 1389, 18:54 عصر
گفته اين دوستمان كاملا درست است
بايد براي كار با تاريخ بايد از توابع خود آفيس استفاده كرد.
و اين رو هم قبول دارم كه براي نگهداري تاريخ حتما بايد فيلد از جنس تاريخ گرفت و اين يكي از بزرگترين مشكلات برنامه نويسان ايراني است
كه متاسفانه بعد از اين همه سال هنوز روش واحد را در پيش نگرفته اند.

مشكلي كه الان دارم دست و پنجه نرم مي كنم همين است
قبلا مبدلي كه ويندوز MRT بود استفاده كرده ام و خيلي هم عالي بوده حتي داده هايم را داخل SQL هم ريخته ام.

ولي الان كه مي خواهم برنامه هايم را روي ويندوز 7 نصب كنم ديگر آن مبدل كار آمد نيست و با مشكل روبرو شده ايم.

شما بگيد بايد چه كاري انجام داد؟

abdoreza57
جمعه 02 مهر 1389, 08:18 صبح
با سلام به همه دوستان
متاسفانه مبدل MRT با تمام ويژگيهايي كه فرموديد تنها در فرم و تيبل ها جواب مي دهد كه البته معمولا كاربر بيشتر با اين دو گزينه سرو كار دارد ولي شما به خوبي واقف هستيد كه در روابط كواري ها و گزارش گيري به هيچ عنوان اين مبدل كارايي ندارد و با ثبت تاريخ به شمسي اتومات آن را به تاريخ قمري در گزارشات و به ميلادي در جستجوي كامبو در مي اورد

لذا با توجه به اينكه استفاده از اين تابع قبل از اينكه رهگشا باشد مشكل ساز براي آينده خواهد بود به نظر من در استفاده از اين تابع بايد در حد امكان اجتناب كرد
باز نظر اساتيد در اين زمينه راهگشا خواهد بود
يا علي.....

abdoreza57
شنبه 06 آذر 1389, 20:46 عصر
ضمن عرض سلام خدمت اساتيد محترم و همچنين جناب amirzazadeh (http://www.barnamenevis.org/forum/member.php?u=47888) كه چند ماه قبل با راهنمايي ايشان مشكلم حل شد
امروز مجددا چنين مسئله اي پيش آمد كه خواستم به همان روش جناب اميرزاده آن را حل كنم لذا بهترين روشي كه به ذهنم مي رسيد استفاده از كد معركه شما بود اما متاسفانه نتوانستم آن را در فايل اكسس ديگري اجرا كنم ارور 3265 كه قادر به پيدا كردن فيلد نيست نمايان مي شود
كل form1 را در برنامه ايمپورت كردم كدها را چك نمودم ولي نشد
اگر لطف كني و اشكال كار را برايم بگويي ممنون مي شوم يك احتمال دادم كه برنامه با vb نوشته شده
در هر صورت محبت كنيد آن را به صورت قابل استفاده براي مبتديان در آوريد تا بتوانيم با يك كليك بر روي باتوم اين عمليات را انجام دهيم

abdoreza57
جمعه 12 آذر 1389, 09:36 صبح
خواهش مي كنم در مورد اين مهم توضيح مفصل بديد
اينكه بتوان از يك فرم به راحتي براي چنين مواردي استفاده كرد

abdoreza57
جمعه 12 آذر 1389, 09:37 صبح
در حال حاضر اين مسئله بسيار فكرم را مشغول كرده خواهش مي كنم از اساتيد محترم راهنمايي كنند

wolfstander
شنبه 13 آذر 1389, 08:03 صبح
سلام دوست عزیز
من راهنمایی های بقیه دوستان را دیدم
سوالات شما را هم دیدم
مشکلات را هم دیدم
پاسخ ها رو هم دیدم
ولی دقیق نفهمیدم که مشکل شما کجاست؟
شما میخواید تاریخ هاتون تبدیل به شمسی بشه؟
میخواید که ورود تاریخ به فارسی باشه؟
کجا مشکل داری دوست عزیز؟

abdoreza57
شنبه 13 آذر 1389, 16:31 عصر
با سلام به شما دوست گرامي آفاي amirzazadeh در پست 4 فايلي كه ضميمه كرده اند جواب معماي من بود منتها مشكل اينجاست كه با ايمپورت و انتقال اين كدها (form1 ) به يك فايل اكسس ديگر اين امكان ممكن نميباشد و ارور3265 ميدهد مشكل زماني به وجود آمد كه خواستم از اين كد در برنامه ديگري استفاده كنم ولي نشد به نظر شما اگر توضيحاتم كافي است راحي هست كه بتوان آن را به صورت يك ماژول به كار برد يا چه تغيير ديگري بايد در برنامه پست شماره 4 داد ؟

amirzazadeh
یک شنبه 14 آذر 1389, 08:03 صبح
با سلام به شما دوست گرامي آفاي amirzazadeh در پست 4 فايلي كه ضميمه كرده اند جواب معماي من بود منتها مشكل اينجاست كه با ايمپورت و انتقال اين كدها (form1 ) به يك فايل اكسس ديگر اين امكان ممكن نميباشد و ارور3265 ميدهد مشكل زماني به وجود آمد كه خواستم از اين كد در برنامه ديگري استفاده كنم ولي نشد به نظر شما اگر توضيحاتم كافي است راحي هست كه بتوان آن را به صورت يك ماژول به كار برد يا چه تغيير ديگري بايد در برنامه پست شماره 4 داد ؟
سلام
شما علاوه بر كدهاي همراه فرم ، بايد ماژول مربوطه هم به داخل فايل جديد ايمپورت كنيد.(اگر مشكل برطرف نشد فايلتون رو اپلود كنيد)
...................................
موفق باشيد

abdoreza57
دوشنبه 15 آذر 1389, 20:38 عصر
با سلام به شما عزيز دل برادر كه بالاخره تونستم باهاتون ارتباط برقرار كنم
در واقع استاد عزيز من يك برنامه قبلا طراحي كرده بودم كه خوشبختانه تونستم با مطالعه مطالب مفيد سايت به دانسته هاي مفيدي دست يابم لذا خواهشي كه دارم اين است كه مرا راهنمايي كنيد تا ايرادات برنامه اصلاح و انشاءاله به زودي بتونم اصل كامل برنامه را براي استفاده عموم بذارم

abdoreza57
دوشنبه 15 آذر 1389, 20:48 عصر
اميرزاده عزيز اينم فايل ضميمه كه البته تا كامل شدن راه بسيار داره

amirzazadeh
سه شنبه 16 آذر 1389, 11:04 صبح
اميرزاده عزيز اينم فايل ضميمه كه البته تا كامل شدن راه بسيار داره
سلام
نمونه رو براتون اصلاح كردم ببينيد مشكل برطرف شده:

abdoreza57
سه شنبه 16 آذر 1389, 20:21 عصر
به اندازه يك دنيا ممنون
ميشه لطف كني و كمي توضيح بدي كه مشكل كجا بود با اين راهنمايي شما اميدوارم بتونم روش حل چنين مسائلي را بفهمم
آخه من همين كدو تو يك نمونه ديگه امتحان كردم ولي run-time error6 ظاهر ميشه
هرچند به لطف شما خيلي كارم جلو افتاد اگه از وقتتون ميشه كمي به ما مبتدي ها اختصاص بدي ممنون ميشم در مورد اين مطلب با توضيح ما را راهنمايي كني

abdoreza57
پنج شنبه 18 آذر 1389, 13:13 عصر
با سلام مجدد
اين كد كه آقاي اميرزاده دادند در موارد اين چنيني فكر مي كنم تنها راه حل باشد من اين پست يك بار ديگه خوندم روشهاي دوستان را امتحان كردم ولي اين روش به نظر مي رسه تنها راه حل اساسي باشه ولي اينكه چنين مشكلي داره برام عجيبه يا لااقل اون گيرش را نميدونم