PDA

View Full Version : سوال: ثبت تاریخ در جدول بدون تکرار



bemilove
یک شنبه 29 خرداد 1390, 12:24 عصر
در نمونه فرم ،ما می خواهیم وقتی نگهبان روی دکمه ثبت ورود کلیک کرد،درصورتی که قبلا (تاریخ روز)وارد نشده ،این تاریخ , و زمان را در جدول ذخیره و و وارد فرم اصلی(f_main)شود.اما در صورتیکه تاریخ روز قبلا وارد شده باشد (تکراری باشد-نگهبان قبلا ورودش را یکبار اعلام کرده باشد) به نگهبان پیغام بدهد که اطلاعات قبلا وارد شده و بدون ذخیره کردن تاریخ به فرم اصلی برود...ممنون

مهدی قربانی
یک شنبه 29 خرداد 1390, 20:01 عصر
سلام
نمونه شما اصلاح شد . به كد نويسي و بعضي تغييرات اعمال شده در نمونه ( نامگذاري فيلدها ) توجه كنيد .

bemilove
یک شنبه 29 خرداد 1390, 20:41 عصر
ممنون از جوابتون...ولی مشکل اینجاست که نام نگهبان را برای یکبار اجازه می دهد که وارد شود..من تاریخ ویندوز راعوض کردم ولی دوباره پیغام می دهد که این نگهبان وارد شده است.در صورتیکه ممکن است یک فرد روز بعد هم نگهبان باشد.(بهتر بگویم در یک روز فقط یک بار اطلاعات نگهبانی وارد شود.یعنی تاریخ چک شود وبر اساس تاریخ بگوید این دیتا تکراری است)

مهدی قربانی
دوشنبه 30 خرداد 1390, 00:23 صبح
سلام
نمونه اصلاح شد .

bemilove
سه شنبه 07 تیر 1390, 20:06 عصر
سلام
نمونه شما اصلاح شد . به كد نويسي و بعضي تغييرات اعمال شده در نمونه ( نامگذاري فيلدها ) توجه كنيد .
فایل (http://barnamenevis.org/attachment.php?attachmentid=71381&d=1308514923)

چه کارکنم ،اگر مثلا ساعت 7 صبح ،نگهبان جدید مشغول بکار شده و فرم f_main باز کنه و او ورود اطلاعات شیفت خود را وارد نکرده باشد پیغامی به او بدهد که "اطلاعات شیفت امروز وارد نشده است"....؟؟

مهدی قربانی
چهارشنبه 08 تیر 1390, 17:02 عصر
سلام
شما بايد در زمان ورود نگهبان رو شناسايي كنيد بعد چك كنيد كه ورودش ثبت شده يا نه براي اين منظور ملزم به ايجاد نام كاربري براي افراد هستيد تا برنامه ورود فرد رو تشخيص و بعد نسبت به بررسي وضعيتش اقدام كنه . شما از الگوريتمي مشابه الگوريتم نوشته شده در رخداد كليك كامند باتون ثبت ورود كه در نمونه موجوده بهره بگيريرد با اين تفاوت كه در اونجا فرد انتخاب شده از كامبو بررسي ميشد اما در اينجا شما بايد بعد از ورود شخص و شناسايي اون از طريق نام كاربري وضعيتش رو بررسي و پيغام مناسب رو صادر كنيد .

bemilove
چهارشنبه 08 تیر 1390, 23:16 عصر
سلام
شما بايد در زمان ورود نگهبان رو شناسايي كنيد بعد چك كنيد كه ورودش ثبت شده يا نه براي اين منظور ملزم به ايجاد نام كاربري براي افراد هستيد تا برنامه ورود فرد رو تشخيص و بعد نسبت به بررسي وضعيتش اقدام كنه . شما از الگوريتمي مشابه الگوريتم نوشته شده در رخداد كليك كامند باتون ثبت ورود كه در نمونه موجوده بهره بگيريرد با اين تفاوت كه در اونجا فرد انتخاب شده از كامبو بررسي ميشد اما در اينجا شما بايد بعد از ورود شخص و شناسايي اون از طريق نام كاربري وضعيتش رو بررسي و پيغام مناسب رو صادر كنيد .

اگر هر روز يك نگهبان متفاوت وارد برنامه ميشد ،شايد صحبت شما درست..اما ممكن است نگهبان روز بعد هم شيفت باشه...مي خواهم 12 شب به بعد به هر فردي كه وارد سيستم شده بگويد ،اطلاعات شيفت امروز وارد نشده است.(معمولا برنامه صبح بين ساعت 7 ونيم تا 8 ونيم باز مي شود)

مهدی قربانی
شنبه 11 تیر 1390, 07:46 صبح
اگر هر روز يك نگهبان متفاوت وارد برنامه ميشد ،شايد صحبت شما درست..اما ممكن است نگهبان روز بعد هم شيفت باشه...مي خواهم 12 شب به بعد به هر فردي كه وارد سيستم شده بگويد ،اطلاعات شيفت امروز وارد نشده است.(معمولا برنامه صبح بين ساعت 7 ونيم تا 8 ونيم باز مي شود)


سلام
1 برنامه آيا در تمام اوقات در دسترس كاربر قرار داره | 2 يا فقط بين ساعات 7:30 تا 08:00 در دسترس هست ؟ اگر پاسخ گزينه اول باشه ميشه خواسته شما رو عملي كرد اما اگر گزينه دوم باشه كه ديگه شما كاربر رو ملزم كرديد فقط در محدوده زماني تعيين شده بتونه وارد برنامه بشه و منطقاً نگهبان در ساعات غير امكان ورود به سيستم رو نداره كه بخواد موظف به ثبت اطلاعات باشه .

bemilove
شنبه 11 تیر 1390, 09:18 صبح
سلام
1 برنامه آيا در تمام اوقات در دسترس كاربر قرار داره | 2 يا فقط بين ساعات 7:30 تا 08:00 در دسترس هست ؟ اگر پاسخ گزينه اول باشه ميشه خواسته شما رو عملي كرد اما اگر گزينه دوم باشه كه ديگه شما كاربر رو ملزم كرديد فقط در محدوده زماني تعيين شده بتونه وارد برنامه بشه و منطقاً نگهبان در ساعات غير امكان ورود به سيستم رو نداره كه بخواد موظف به ثبت اطلاعات باشه .

بله در تمام ساعات شبانه روز در دسترس است.

مهدی قربانی
شنبه 11 تیر 1390, 15:03 عصر
سلام
خوب با اين حساب همونطور كه قبلاً اشاره كردم شما بايد در زمان باز شدن برنامه نگهبان رو از طريق ورود نام كاربري و رمز عبور شناسايي كرده بعد در رخداد Load فرم مورد نظر مشابه همون الگوريتمي كه در نمونه تقديم شد وضعيت ثبت اطلاعات فرد مورد نظر رو چك كنيد تا در صورتي كه اطلاعات ورودش رو ثبت نكرده ضمن دريافت پيغام به فرم ثبت ورود هدايت بشه و بقيه فرآيند هم كه مطابق نمونه اوليه عيناً صورت ميگيره .

bemilove
شنبه 11 تیر 1390, 17:35 عصر
آقای قربانی من برنامه نویس نیستم....اگر ممکن است باتوجه به صحبتهای بالا نمونه راا صلاح بفرمایید.(بیشتر این مد نظر است که از ساعت 12 شب به بعد به نگهبان -هرکه باشد هشدار دهد که ورود اطلاعات شیفت ثبت نشده است)..(باچک کردن تیبل t_voroud)

bemilove
یک شنبه 19 تیر 1390, 09:32 صبح
سلام
خوب با اين حساب همونطور كه قبلاً اشاره كردم شما بايد در زمان باز شدن برنامه نگهبان رو از طريق ورود نام كاربري و رمز عبور شناسايي كرده بعد در رخداد Load فرم مورد نظر مشابه همون الگوريتمي كه در نمونه تقديم شد وضعيت ثبت اطلاعات فرد مورد نظر رو چك كنيد تا در صورتي كه اطلاعات ورودش رو ثبت نكرده ضمن دريافت پيغام به فرم ثبت ورود هدايت بشه و بقيه فرآيند هم كه مطابق نمونه اوليه عيناً صورت ميگيره .
نمونه گذاشتم.
مشکلات: خطای date type mismatch in criteria expression می دهد
با توجه به جواب شما من نتونستم فایل را اصلاح کنم..ممنون می شوم اصلاحش کنید
در صورتیکه کاربر قبلا ثبت ورود شیفت(با شروع روز) انجام داده باشد پیغام بدهد که قبلا اطلاعات شیف وارد شده واجازه ورود او به فرم شیفت ندهد.(در حال حاضر اگر قبلا وارد کرده باشد پیغام می دهد که فعلا خطای بالا را می دهد)
اگر هم پس از ورود ثبت شیفت انجام نداده باشد به او پیغام بدهد که اطلاعات شیفت وارد نشده است

myinbox221
یک شنبه 19 تیر 1390, 10:56 صبح
اگر عدد 1 رو که در کد هست تغییر بدید مشکلتون حل می شه . مثلا هر نگهبان به جای یکبار بتونه 2 یا 3 بار در روز ورود بزنه باید کد رو به 2 یا 3 تغییر بدید .
هر عددی بزنید به همون تعداد می تونه ورود بزنه

bemilove
یک شنبه 19 تیر 1390, 11:37 صبح
اگر عدد 1 رو که در کد هست تغییر بدید مشکلتون حل می شه . مثلا هر نگهبان به جای یکبار بتونه 2 یا 3 بار در روز ورود بزنه باید کد رو به 2 یا 3 تغییر بدید .
هر عددی بزنید به همون تعداد می تونه ورود بزنه

متاسفانه جواب نداد

myinbox221
یک شنبه 19 تیر 1390, 21:02 عصر
با دقت بیشتری انجام بدید.
من تست کردم مشکلی نداشت . عدد رو کردم 10 . بعد 10 بار تونستم یکنفر رو ورود بزنم .

مهدی قربانی
دوشنبه 20 تیر 1390, 01:04 صبح
سلام
خطوط زیر در کد رو اصلاح کنید :



On Error GoTo Err_Command2_Click

Dim Rst As DAO.Recordset
Dim numID As Integer
Dim numIDcount As Integer
Dim strDate As Long
numID = Me.Combo0
strDate = Me.date_voroud
Set Rst = CurrentDb.OpenRecordset("t_voroud")
numIDcount = DCount("StrEmpName", "t_voroud", "[date_voroud]=" & strDate)

If numIDcount < 1 Then
Rst.AddNew
Rst.Fields("StrEmpName") = numID
Rst.Fields("date_voroud") = strDate
Rst.Fields("time_voroud") = Now()
Rst.Update
Me.Refresh
Else
st = MsgBox("äåÈÇä ãÍÊÑã ¡ÞÈáÇ ÏÑ Çíä ÊÇÑíÎ ¡ËÈÊ ÓÇÚÊ æÑæÏ ¡ÇäÌÇ㠐ÑÝÊå ÇÓÊ ¡ÏÑ ÕæÑÊí ˜å ãØãÆä åÓÊíÏ ËÈÊ ÓÇÚÊ ÇäÌÇã äÔÏå ÇÓÊ. ÈÇ ãÏíÑ ÎæÏ ÊãÇÓ ÈíÑíÏ !!", vbCritical, "ÊæÌå")

End If

Rst.Close
Set Rst = Nothing

Me.Visible = False
DoCmd.OpenForm "f_main"

Exit_Command2_Click:
Exit Sub

Err_Command2_Click:
MsgBox Err.Description
Resume Exit_Command2_Click

End Sub


Private Sub Form_Load()
On Error GoTo Err_Form_Load

Dim Rst As DAO.Recordset
Dim numID As Integer
Dim numIDcount As Integer
Dim strDate As Long
numID = Me.Combo0
strDate = Me.date_voroud
Set Rst = CurrentDb.OpenRecordset("t_voroud")
numIDcount = DCount("StrEmpName", "t_voroud", "[date_voroud]=" & strDate)

If numIDcount < 1 Then
Rst.AddNew
Rst.Fields("StrEmpName") = numID
Rst.Fields("date_voroud") = strDate
Rst.Fields("time_voroud") = Now()
Rst.Update
Me.Refresh
Else
st = MsgBox("äåÈÇä ãÍÊÑã ¡ÞÈáÇ ÏÑ Çíä ÊÇÑíÎ ¡ËÈÊ ÓÇÚÊ æÑæÏ ¡ÇäÌÇ㠐ÑÝÊå ÇÓÊ ¡ÏÑ ÕæÑÊí ˜å ãØãÆä åÓÊíÏ ËÈÊ ÓÇÚÊ ÇäÌÇã äÔÏå ÇÓÊ. ÈÇ ãÏíÑ ÎæÏ ÊãÇÓ ÈíÑíÏ !!", vbCritical, "ÊæÌå")

End If

Rst.Close
Set Rst = Nothing

Me.Visible = False
DoCmd.OpenForm "f_main"

Exit_Form_Load:
Exit Sub

Err_Form_Load:
MsgBox Err.Description
Resume Exit_Form_Loadدر نمونه قبلی جنس فیلد تاریخ ورود Text بود اما در نمونه فعلی Number شده خطا به همین دلیل صادر میشد .