PDA

View Full Version : مشکل زمان در شیفت 24 ساعته نامتعارف



reza_1199
جمعه 13 بهمن 1402, 00:32 صبح
سلام و عرض ادب خدمت دوستان و اساتید
دوستان یک جدولی دارم که در زمان ثبت اطلاعات بنا بر شرایط کاری که شیفت بصورت 24 ساعته هست از 07:30 صبح آغاز میشه و تا فردا صبح ساعت 07:30 ادامه دارد و شیفت ها به صورت 12 ساعته شیفت اول و دوم می باشد برای این منظور در هنگام ذخیره اطلاعات در جدول دستورات زیر را در قسمت time فرم نوشته ام
If Time() > #7:45:00 AM# And Time() < #7:45:00 PM# Then
Me.Text1.Value = Shamsi()
Me.Text0.Value = "شيفت اول"


ElseIf Time() > #7:45:00 PM# And Time() < #11:59:59 PM# Then
Me.Text1.Value = Shamsi()
Me.Text0.Value = "شيفت دوم"


ElseIf Time() > #12:00:00 AM# And Time() < #7:45:00 AM# Then
Me.Text1.Value = Shamsi()
Me.Text1 = Slash(SubDay([Text1], [Text3]))
Me.Text0.Value = "شيفت دوم"
End If
و تایم اینتروال رو برابر 1000 قرار داده ام و به منظور اینکه از بعد از ساعت دوازده شب تاریخ باز به صورت روز قبل باشه یک روز از تاریخ بعد از ساعت 12 شب کم می کنم و تا اینجا به نظرم مشکلی نیست
همچنین در این فرم یه زمان حذف برای کاربران در نظر گرفته ام که با توجه به کد زیر هنگام ذخیره کردن اطلاعات دو دقیقه زمان حذف بروی زمان ذخیره اطلاعات اضافه می کنم تا در این 120 ثانیه کاربران بتوانند اشتباهات پیش آمده را حذف کنند
Dim timea As Date
Dim timeb As Date
timea = Format(Now(), "hh:mm:ss")
rst!timeshow = DateAdd("s", 120, timea)

و این کد هم به درستی کار میکنه ولی یه مشکل کوچولو از زمانی شروع میشه که
از ساعت 07:30 تا 23:59:59 قانون حذف کردن درست کار میکند . ولی بعد از ساعت دوازده شب همه رکوردهای ثبت شده که از صبح ثبت شده و زمان حذف آن گذشته به صورت آزاد جهت حذف کردن قرار می گیره و حتی بعد از ساعت دوازده که اطلاعات ثبت شده اون 120 ثانیه اعمال نمیشه و باز کاربر به راحتی میتونه حذف کنه .
ممنون میشم اساتید و دوستان راهنمایی کنن سپاس

eb_1345
جمعه 13 بهمن 1402, 08:17 صبح
سلام آقا رضا!
فکر می کنم مشکل بخاطر اون یک روزی باشه که از تاریخ فعلی کم می کنی . چون با اینکار رکوردهای ثبت شده روز قبل در محدود مجاز زمان حذف قرار می گیرند.
اگه حداقل اون فرمی که در اون کدهای مربوط به ثبت اطلاعات بکار برده ای به همراه جدول مربوطه از برنامت جدا میکردی و بصورت فایل نمونه ضمیمه میکردی راحتتر میشد بررسی کرد که دقیقا مشکل از کجاست.

reza_1199
جمعه 13 بهمن 1402, 10:19 صبح
ممنون استاد حتما چشم بینهایت بخاطر حسن توجهتون سپاسگزارم .
آقای بهرامی عزیز فایلم انقدر به هم ریخته ست که اگر امکانش باشه بخاطر حجم زیاد اگر مغایرتی نداره و بی ادبی نباشه به ایمیلتون ارسال کنم . (جمیل من asadpourreza2@gmail.com)

reza_1199
جمعه 13 بهمن 1402, 21:52 عصر
سلام شب خوش . استاد بزرگوار آقای بهرامی نمونه خدمت شما

eb_1345
شنبه 14 بهمن 1402, 00:12 صبح
یه مشکل کوچولو از زمانی شروع میشه که
از ساعت 07:30 تا 23:59:59 قانون حذف کردن درست کار میکند . ولی بعد از ساعت دوازده شب همه رکوردهای ثبت شده که از صبح ثبت شده و زمان حذف آن گذشته به صورت آزاد جهت حذف کردن قرار می گیره و حتی بعد از ساعت دوازده که اطلاعات ثبت شده اون 120 ثانیه اعمال نمیشه و باز کاربر به راحتی میتونه حذف کنه .

سلام
دلیلش اینست که زمان های ثبت شده قبلی بزرگتر از زمان وارد شده جدید میباشه . شرطی که بکار برده ای صحیح نیست . شما برای حذف نشدن رکورد شرط گذاشته ای که اگر زمان های ثبت شده قبلی کوچکتر از زمان ثبت شده جدید بود بعد از گذشت 120 ثانیه امکان حذف وجود نداشته باشد و این شرط صحیح نمی باشد چرا که بلافاصله بعد از 12 شب زمان های ثبت شده قبلی از زمان جدید بزرگترند.
راهکار اینست که اختلاف زمان ثبت شده قبلی با زمان جدید بدست آید و شرط گذاشته شود که اگر اختلاف این دو بیشتر از 120 ثانیه شد رکورد قابل حذف نباشه:
در کدهای زیر اختلاف دو زمان فعلی و قبلی بر حسب ثانیه در متغییر DDiff قرار داده داده ام و بعد این عدد رو داخل تابع قدر مطلق abs قرار داده ام که اگر اختلاف دو زمان منفی بود عدد منفی به مثبت تبدیل شود .بعد شرط گذاشته ام که اگر این عدد بزرگتر از 120 شد پیغام عدم حذف رکورد صادر بشه
این کدها رو جایگزین اون چند خط کد خودت که در رویداد حذف رکورد استفاده کرده ای بکن !


Dim DDiff As Double
Dim Timein As Date
Dim Timeout As Date
Timein = Text2
Timeout = Text1
DDiff = DateDiff("s", Timein, Timeout)
If Abs(DDiff) > 120 Then
Dim Y As String
Y = MsgBox("زمان حذف اين مورد به پايان رسيده است!", vbOKOnly + vbCritical + vbMsgBoxRight, "هشدار/ به کاربر")
Exit Sub
End If

reza_1199
شنبه 14 بهمن 1402, 20:12 عصر
سلام و شب به خیر
مثل همیشه عااااالی دستت درد نکنه استاد بهرامی ( یاااااااشاااااااا )