PDA

View Full Version : سوال: فاصله بين دو روز يا محدوده بين دو تاريخ شمسي



abdoreza57
شنبه 17 اردیبهشت 1390, 16:27 عصر
با سلام خدمت اساتيد محترم مي خواستم بدونم چطور مي تونيم محدوده بين دو تاريخ شمسي از نوع تكست را به دست بياريم در مثال زير با ايجاد دو تاريخ مي خواهم تاريخ انتها از ابتدا كسر شده و فاصله بين دو تاريخ بدست آيد در ضمن من مصمم هستم از برنامه دوست عزيزمون id1385 استفاده كنم كه كاربر در ورود اطلاعات به داخل فرم دچار اشتباه نشده و در ضمن در گزارشگيري از سيستم دچار مشكل نشويم
من در طول تهيه برنامه ها هنگام گزارشگيري به مشكلات زيادي در مورد تاريخ برخورد نمودم كه البته با توجه به يكسان وارد كردن تاريخها و عدم ايجاد مشكل در ورود اطلاعات كاربري اين مشكل ديگرد نخواهد ماند

دوستان حرفه اي خواهش مي كنم اگه راهي مي دونند كه بشه بدون اينجاد كمبو باكس و به محض ورود اطلاعات دو تاريخ اين نتيجه به نمايش در بياد كمك كنند تا بقيه هم يه نمونه كار عالي را ياد بگيرند

bita_ziba77
یک شنبه 18 اردیبهشت 1390, 07:30 صبح
با سلام
شما به راحتي مي توانيد در 2 عدد text box كه مخفي مي باشند ابتدا تاريخ هاي خود را به ميلادي تبديل كرده و سپس هر گونه عمليات مورد نياز را بر روي آن ها انجام داده و در نهايت دوباره به تاريخ شمسي تبديل نماييد.
با جستجو در سايت به نمونه هاي بسياري دسترسي خواهيد داشت.

با تشكر

abdoreza57
دوشنبه 19 اردیبهشت 1390, 23:12 عصر
اگه دوستان لطف كنند همين فايل ضميمه را اگه راهي مي شناسند كه بشه به اين نتيجه رسيد اصلاحش كنند

mehdi_moghimi
سه شنبه 20 اردیبهشت 1390, 00:25 صبح
نمونتون اصلاح شد

abdoreza57
سه شنبه 20 اردیبهشت 1390, 16:39 عصر
با تشكر از دوست عزيزم
من فكر مي كنم اگه به شكل زير بتونم نمونه را اصلاح كنم منطقي و كاربرديتره يعني تو فيلد اول كاربر بعد از وارد كردن تاريخ سفارش وقتي فيلد تاريخ تحويل را وارد كرد تو اين تكست باكس سوم فاصله دو تاريخ به نمايش دربياد

dadsara
چهارشنبه 21 اردیبهشت 1390, 09:14 صبح
سلام
فعلا بخاطر اینکه کارتان راه بیافتد کدهای زیر کلید text1 را به این شکل تغییر دهید

Private Sub text1_KeyDown(KeyCode As Integer, Shift As Integer)
DoCmd.OpenForm "frmcalendar", acNormal, , , , acDialog
text1.Value = strDate
Dim date1, date2
date1 = Mid(text0, 3, 2) + Mid(text0, 6, 2) + Right(text0, 2)
date2 = Mid(text1, 3, 2) + Mid(text1, 6, 2) + Right(text1, 2)
MsgBox date1
MsgBox date2
Text3 = Diff(date1, date2)
End Sub

abdoreza57
چهارشنبه 21 اردیبهشت 1390, 21:03 عصر
سلام دوست گرامي
ممنون كارم راه افتاد سوال ديگه اي تو ذهنم هست كه مي پرسم : به علت خاصيت تكست بودن تاريخهاي شمسي چطور مي تونم يه ليست از همين فرم داشته باشم كه سفارش .....داراي تحويل .... روزه بوده است
با وارد كردن كد شما تو فيلد تحويل جواب بدست مي آيد اما همانطور كه مي بينيد با ورود به ركورد ديگر اين عدد ثابت همچنان نمايش داده مي شود

id1385
چهارشنبه 21 اردیبهشت 1390, 21:12 عصر
با سلام
دوست عزیز با یه کم دقت متوجه میشدید مشکل شما از قبل حل شده بوده است


Private Sub Command16_Click()
On Error Resume Next
Text3.Value = Diff(Replace(text0.Value, "/", "") _
, Replace(text1.Value, "/", ""))
End Sub


سوال دومتون رو متوجه نشدم،:متفکر:


موفق باشید

abdoreza57
پنج شنبه 22 اردیبهشت 1390, 21:49 عصر
ضمن تشكر از جنابعالي
مي خواستم در هر ركورد از فرم بالا اين محدوده ثبت شود چون تو گزارشگيري بهش احتياج دارم اگه به محض وارد كردن تاريخ تحويل اين فاصله روز به نمايش در بياد عالي ميشه
خلاصه اينكه من به يك فيلد هم نياز دارم كه محدوده اين دو روز را برايم پيدا كند
همچنين اين فرمول را وقتي در تكست باكس قرار مي دهم قبول نمي كند ميشه علتش را بگي يا برام حلش كني ؟

dadsara
شنبه 24 اردیبهشت 1390, 07:53 صبح
سلام
رخداد مورد نظر زیر کلید طراحی شده گنجانده شده است شما می توانید آنرا در جای مناسب و مورد نظر خود مثلا Exit تاریخ دوم قرار دهید

abdoreza57
شنبه 24 اردیبهشت 1390, 23:38 عصر
سوال اينجاست كه با ورود به ركورد ديگر اين عدد مادامي كه مجددا به فيلد تاريخ تحويل مقداري وارد نشود همچنان باقي مي ماند
حال اگر بخواهيم در هر ركورد فاصله بين اين دو روز به نمايش در آيد (در هر ركورد از فرم مشخص باشد كه سفارش با چه محدوده اي تحويل شده است ) چه بكنيم؟


در صورتيكه به اين تكست باكس فرمول
[diff([date-pay];[date-rent مي دهم ارور مي دهد اساتيد محترم راهنمايي كنيد چون اگه به نتيجه برسم تو گزارشام خيلي به دردم مي خورد
تو نمونه اي كه گذاشتم دقيقا به خواسته ام مي رسم منتها تاريخ ميلادي را فقط جواب ميده

dadsara
یک شنبه 25 اردیبهشت 1390, 09:06 صبح
سلام
فرم و ریپورت را ببین

abdoreza57
یک شنبه 25 اردیبهشت 1390, 22:29 عصر
سلام
همان نتيجه كه تو ريپرت هست را اگه مي شد تو فرم هم قابل مشاهده نمود من دقيقا به خواسته ام مي رسيدم
احتمالا نمونه پست 11 را اگه نگاه مي كرديد يه جواب داشت: كه ميشه يا نه ؟
متاسفانه من هر كاري مي كنم تو فرمها مطابق نمونه پست 11 كه تاريخ شمسي را بشه محدوده تعيين كرد نمي تونم انجام بدم
اگه لطف كنيد و راهش را برام بگيد ممنون ميشم

dadsara
دوشنبه 26 اردیبهشت 1390, 10:17 صبح
سلام
دوست عزیز دقیقا همان کار ، زیر کلید مربوط در فرم 1 طراحی شده است لطف کنید این قطعه کد را در هرجائی که صلاح می دانید قرار دهید

abdoreza57
دوشنبه 26 اردیبهشت 1390, 23:00 عصر
سلام
فكر مي كنم نتونستم منظورم را برسونم
ولي به نظرم اين راه بهتر باشه كه یک فیلد ثانویه به صورت non visible تعریف کنم که هرگاه در فیلد اولیه در فرم، تاریخ شمسی وارد شد، آنگاه معادل آن به صورت میلادی در این فیلد ثانویه نوشته شود.بعد داده این فیلد ثانویه براي محاسبات خودكار محدوده دو تاريخ استفاده نمايم . تفاوتش با نمونه شما دوست عزيزم اينه كه محاسبات خودكاره و نيازي به كليك و ... نيست و در ضمن در هر ركورد فاصله دو تاريخ بدون هيچ كاري قابل مشاهده مي باشد
بنابر اين هردو فرمت رو ذخیره ميكنم . وبا تاریخ میلادی کارمو انجام ميدم و تاریخ شمسی را براي ورود يوزر مي ذارم
با توجه به اين پيشنهاد دوستان اگه لطف كنند راهنمايي كنند ممنون ميشم كه از چه تابعي و چطور استفاده كنم بهتره ؟ ضمن اينكه تاريخ ورودي مطابق نمونه 10 رقمي است و فانكشن براي اين مي بايست تعريف شود
از تمام اساتيد و مخصوصا مديران محترم سايت قدرداني مي كنم

abdoreza57
سه شنبه 27 اردیبهشت 1390, 20:51 عصر
همچنان كه با ورود به يك ركورد خاص مي توان مجموع اعداد يا .... غيره را فرمول نويسي كرد چطور ميشه اين رويه را براي تاريخ شمسي تعريف كرد ؟
از اساتيد محترم خواهش ميكنم كه راهنماييهاي لازم را مبذول نمايند

abdoreza57
پنج شنبه 29 اردیبهشت 1390, 22:54 عصر
سلام به تمام دوستان خوبم
كسي با توجه به راهكاري كه دادم ميتونه فرمو اصلاح كنه ؟

abdoreza57
شنبه 31 اردیبهشت 1390, 18:54 عصر
سلام
انتظار داشتم دوستان مشاركت كنند حداقل لطف كنند بگند كه اين كار ممكن هست يا خير

jack007
یک شنبه 01 خرداد 1390, 09:14 صبح
سلام
این فایل پیوست مشکلتونو حل می کنه
در فرم ها - فرم report رو باز کنید و بین دو تاریخ از 1/89 لغایت 12/89 سرچ کنید.

جعفر88
یک شنبه 01 خرداد 1390, 11:12 صبح
سلام
دوست عزيز ببينيد فايل پيوستي به كار شما مياد يا نه . در اين فايل از تابع DiffFaDatesByDay براي محاسبه تفاوت دو تاريخ به روز استفاده شده كه ابتدا تاريخ ها به روز تبديل شده شده و دو عدد از هم كم ميشه .

abdoreza57
دوشنبه 02 خرداد 1390, 23:25 عصر
:اشتباه::ناراحت:
توضيحات پست 15
نمونه ضميمه پست 11

michkadol
چهارشنبه 04 خرداد 1390, 12:22 عصر
با سلام
اساتید عزیز چطور میتوان فاصله بین دو تاریخ را به صورت سال و ماه و روز نمایش داد
اختلاف بین دوتاریخ 10/01/1372 و 13/12/1375 را یصورت
2 سال و 11 ماه و 3 روز
نمایش داد

جعفر88
پنج شنبه 05 خرداد 1390, 07:18 صبح
سلام
تو ارسال قبلي(شماره 19) مي تونين با كمي تغيير به خواسته تون برسين نمونه اش در اين ارسال (http://barnamenevis.org/showthread.php?53141-%D8%AF%DB%8C%D8%AA%D8%A7-%D8%A8%DB%8C%D8%B3-%D9%87%D8%A7-%D9%88-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C&p=1035554#post1035554) نيز هست .

abdoreza57
پنج شنبه 05 خرداد 1390, 11:13 صبح
با سلام
نميدونيد چرا تو نمونه ارساليم فرمول زير كار نمي كنه ؟
[diff([date-pay];[date-rent
دوستان گرامي همانطور كه مي بينيد با ورود داده هاي چديدباز هم اين مشكل همچنان باقي مي ماند كد جديدي تو فانكشن پيدا نمي كنم چرا؟