PDA

View Full Version : سوال: چگونه اعتبار- یک محدوده تاریخی متغییر را- نسبت به -یک محدوده تاریخی ثابت -مشخص نماییم ؟



narpco
دوشنبه 24 آذر 1399, 11:02 صبح
چگونه اعتبار- یک محدوده تاریخی متغییر را- نسبت به -یک محدوده تاریخی ثابت -مشخص نماییم ؟

دوستان سلام
یک فایل داریم و یک صفحه و ماژول فارسی که گفتم شاید نیاز بشه

سمت چپ فرم یک تاریخ ثابت داریم که تغییری ندارد .

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

مثال 1: تاریخ ثابت = از 01-09-1399 تا 30-09-1399
تاریخ متغیر = از 01-01-1399 تا 31-01-1399
جواب : تاریخ شما در محدوده تاریخی ثابت قرارندارد


مثال2 : تاریخ ثابت = از 01-09-1399 تا 30-09-1399
تاریخ متغیر = از 15-09-1399 تا 20-09-1399
جواب : تاریخ شما در محدوده تاریخی ثابت قرار دارد

با سپاس

فایل نمونه :

https://s16.picofile.com/d/8417449676/2245f05e-1996-4110-98ca-b8999d2b2a81/date_to_date.rar

padide55
دوشنبه 24 آذر 1399, 15:04 عصر
چگونه اعتبار- یک محدوده تاریخی متغییر را- نسبت به -یک محدوده تاریخی ثابت -مشخص نماییم ؟

دوستان سلام
یک فایل داریم و یک صفحه و ماژول فارسی که گفتم شاید نیاز بشه

سمت چپ فرم یک تاریخ ثابت داریم که تغییری ندارد .

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

مثال 1: تاریخ ثابت = از 01-09-1399 تا 30-09-1399
تاریخ متغیر = از 01-01-1399 تا 31-01-1399
جواب : تاریخ شما در محدوده تاریخی ثابت قرارندارد


مثال2 : تاریخ ثابت = از 01-09-1399 تا 30-09-1399
تاریخ متغیر = از 15-09-1399 تا 20-09-1399
جواب : تاریخ شما در محدوده تاریخی ثابت قرار دارد

با سپاس

فایل نمونه :

https://s16.picofile.com/d/8417449676/2245f05e-1996-4110-98ca-b8999d2b2a81/date_to_date.rar




سلام
اولیa
دومیb
az
ta


if bAz>=aaz and baz<=ata and bta>=aaz and bta<=ata then
msgbo "ok"
else
msgbox "not in range"
endif

narpco
دوشنبه 24 آذر 1399, 15:28 عصر
سلام ممنون میشم روی فایل نمونه کدتون رو تست کنید مرسی
https://s16.picofile.com/d/841744967...te_to_date.rar (https://s16.picofile.com/d/8417449676/2245f05e-1996-4110-98ca-b8999d2b2a81/date_to_date.rar)

eb_1345
دوشنبه 24 آذر 1399, 15:37 عصر
سلام
اولیa
دومیb
az
ta


if bAz>=aaz and baz<=bta and bta>=aaz and bta<=bta then
msgbo "ok"
else
msgbox "not in range"

endif
سلام
بنظر میرسد جناب padide55 (https://barnamenevis.org/member.php?263869-padide55) به سیستم(کامپیوتر) دسترسی نداشته اند این کدها رو تایپ کرده اند. :لبخند:

narpco
دوشنبه 24 آذر 1399, 16:05 عصر
سئوال به نظر ساده میاد من دو روزه درگیرم .......فک نکنم جوابش به این سادگی ها باشه .....

padide55
دوشنبه 24 آذر 1399, 16:45 عصر
سئوال به نظر ساده میاد من دو روزه درگیرم .......فک نکنم جوابش به این سادگی ها باشه .....

همون کنترل تاریخ رو برای هر دو فیلد درنظر بگیرید .با and

به همین سادگی (https://s16.picofile.com/file/8417494026/date_to_date_011.zip.html)

narpco
دوشنبه 24 آذر 1399, 17:03 عصر
قربونت یه زحمتی بکش این فایل به همین سادگی رو یک تست بکن دمت گرم ...


https://s16.picofile.com/file/8417496026/7777777777.png


تاریخ از
1-9-99 تا 3-9-99

در محدوده تاریخی:
1-9-99
تا 30-9-99

نیست ؟!؟!؟!؟!

eb_1345
دوشنبه 24 آذر 1399, 17:37 عصر
قربونت یه زحمتی بکش این فایل به همین سادگی رو یک تست بکن دمت گرم ...


https://s16.picofile.com/file/8417496026/7777777777.png


تاریخ از
1-9-99 تا 3-9-99

در محدوده تاریخی:
1-9-99
تا 30-9-99

نیست ؟!؟!؟!؟!


یک نکته ظریفی در نظر گرفته بشه مسئله حله ، نیازی هم به تغییر نام تکست باکس نیست
فعلاً نمیگم:لبخندساده:

padide55
دوشنبه 24 آذر 1399, 19:16 عصر
سلام مجدد.



If Diff(txt1, txt2) >= 0 And Diff(txt3, txt4) >= 0 Then 'کنترل ورود داده
If Diff([txt3], [txt1]) >= 0 And Diff([txt4], [txt2]) <= 0 Then ' کنترل محدوده
Me.lbljavab.Caption = "در محدوده"
Else
Me.lbljavab.Caption = "خارج از محدوده"
End If
End If


به نظرم از diffاستفاده‌کنیم بهتره
این هم فایل پیوست با استفاده از تفاضل دو تاریخ با diff
به‌همین زیبایی (https://s16.picofile.com/file/8417509942/date_to_date_013.zip.html)

narpco
دوشنبه 24 آذر 1399, 20:21 عصر
به نظر که درست کار میکنه انشالله تو کار هم درست کارکنه ........دم شما هم گرم ..........

eb_1345
دوشنبه 24 آذر 1399, 22:10 عصر
سلام مجدد.
if txt1>=txt3 and txt2<=txt4 then
msgbox "ok"
else
msgbox "not in range"
endif
ولی در کل
به نظرم از diffاستفاده‌کنیم بهتره

به‌همین زیبایی (https://s16.picofile.com/file/8417509942/date_to_date_013.zip.html)

اگر تاریخ متغیر مثلاً از تاریخ : 1398/12/01 تا تاریخ : 1399/05/02 چی ؟!

padide55
دوشنبه 24 آذر 1399, 22:19 عصر
سلام
فایل نمونه پست 9 را مشاهده بفرمایید.
از diff استفاده شده و مشکلی نداره
ضمنا تاریخ همیشه از کم به زیاد پیش میره .

padide55
دوشنبه 24 آذر 1399, 22:25 عصر
تکرار ارسال پست ....
این پست پاک کردم .

eb_1345
دوشنبه 24 آذر 1399, 22:26 عصر
سلام
فایل نمونه پست 10را مشاهده بفرمایید.
ضمنا تاریخ همیشه از کم به زیاد پیش میره .

الان جائی هستم به سیستم دسترسی ندارم
ولی در متال فوق تاریخ از که سال 98 است از تاریخ تا که سال99 است کوچکتر است . از کم به زیاد

padide55
دوشنبه 24 آذر 1399, 22:51 عصر
کد پست 10رو خودم تست نکردم. فقط برای مثال نوشتم و از توضیح ادامه پست از diffاستفاده کردم . و از ترتیب قرارگیری فیلدها بجای کوچکتر و‌مساوی از تفاضل زمان دو تاریخ استفاده کردم .نتیجه خوب شد .
if diff(txt1;txt3)>=0 and diff(txt2;txt4)<=0 then
msgbox "ok"
else
msgbox "not in range"
اگر تاریخ اول از تاریخ اول محدوده بیشتر باشه و تاریخ دوم از تاریخ دوم محدوده کمتر باشه .
یعنی تفاضل دو تاریخ اول مثبت باشه .و تفاضل دو تاریخ دوم منفی باشه.
تایید
در غیر اینصورت
خارج از محدوده.

یک شرط هم گذاشتم که تاریخ اول بعد از تاریخ دوم نباشه.

narpco
سه شنبه 25 آذر 1399, 00:17 صبح
کد پست 10رو خودم تست نکردم. فقط برای مثال نوشتم و از توضیح ادامه پست از diffاستفاده کردم . و از ترتیب قرارگیری فیلدها بجای کوچکتر و‌مساوی از تفاضل زمان دو تاریخ استفاده کردم .نتیجه خوب شد .
if diff(txt1;txt3)>=0 and diff(txt2;txt4)<=0 then
msgbox "ok"
else
msgbox "not in range"
اگر تاریخ اول از تاریخ اول محدوده بیشتر باشه و تاریخ دوم از تاریخ دوم محدوده کمتر باشه .
یعنی تفاضل دو تاریخ اول مثبت باشه .و تفاضل دو تاریخ دوم منفی باشه.
تایید
در غیر اینصورت
خارج از محدوده.

یک شرط هم گذاشتم که تاریخ اول بعد از تاریخ دوم نباشه.


عزیز..من متوجه یک مطلبی نشدم این پست توضیحی هست یا کد ها تغییر کرده ؟

eb_1345
سه شنبه 25 آذر 1399, 02:38 صبح
سلام مجدد.
if txt1>=txt3 and txt2<=txt4 then
msgbox "ok"
else
msgbox "not in range"
endif
ولی در کل
به نظرم از diffاستفاده‌کنیم بهتره

به‌همین زیبایی (https://s16.picofile.com/file/8417509942/date_to_date_013.zip.html)

اگر تاریخ متغیر مثلاً از تاریخ : 1398/12/01 تا تاریخ : 1399/05/02 چی ؟!


کد پست 10رو خودم تست نکردم. فقط برای مثال نوشتم و از توضیح ادامه پست از diffاستفاده کردم . و از ترتیب قرارگیری فیلدها بجای کوچکتر و‌مساوی از تفاضل زمان دو تاریخ استفاده کردم .نتیجه خوب شد .
if diff(txt1;txt3)>=0 and diff(txt2;txt4)<=0 then
msgbox "ok"
else
msgbox "not in range"
اگر تاریخ اول از تاریخ اول محدوده بیشتر باشه و تاریخ دوم از تاریخ دوم محدوده کمتر باشه .
یعنی تفاضل دو تاریخ اول مثبت باشه .و تفاضل دو تاریخ دوم منفی باشه.
تایید
در غیر اینصورت
خارج از محدوده.
یک شرط هم گذاشتم که تاریخ اول بعد از تاریخ دوم نباشه.

در نمونه پست 9 مورد اشاره شده در پست 11 رو امتحان کردین یا اهمیتی نداره ؟

padide55
سه شنبه 25 آذر 1399, 05:56 صبح
سلام .
ببخشید .توضیحی که در ابتدای پست 9 دادم با فایل پیوست فرق داره .
روش کوچکتر بزرگتر جواب نداد .
diff مشکلی نداشتم



If Diff(txt1, txt2) >= 0 And Diff(txt3, txt4) >= 0 Then 'کنترل ورود داده
If Diff([txt3], [txt1]) >= 0 And Diff([txt4], [txt2]) <= 0 Then ' کنترل محدوده
Me.lbljavab.Caption = "در محدوده"
Else
Me.lbljavab.Caption = "خارج از محدوده"
End If
End If


با توجه به اینکه در نمونه فایل پیوست شده در پست 9 از diff استفاده شده.و این کد فاصله بین دو تاریخ رو با مثبت و منفی نشون میده -منظور قبل و بعد -

"در نمونه پست 9 مورد اشاره شده در پست 11 رو امتحان کردین یا اهمیتی نداره ؟"
امتحان کردم .جواب خارج از محدوده.

یک سوال ؟ مشکل محاسبه نداریم ولی منتظر نکته مورد نظر شما eb_1345 (https://barnamenevis.org/member.php?424036-eb_1345) هستیم.

لینک فایل پست 9 (https://s16.picofile.com/file/8417509942/date_to_date_013.zip.html)

Shahramdindoust
جمعه 28 آذر 1399, 12:02 عصر
سلام بحث جالبی است
ولی در "لینک فایل پست 9" وقتی تکست باکس ها خالی هم باشند باز هم جواب "در محدوده" می دهد
راستش من قصد داشتم چون تازه کارم به عنوان تجربه، خالی بودن و نبودن تکست باکس ها رو هم از طریق isnull به فایل اضافه کرده باشم همین