اذهب الي المحتوي
أوفيسنا

طلب اصلاح كود


عمر ضاحى
إذهب إلى أفضل إجابة Solved by ابوخليل,

الردود الموصى بها

السلام عليكم اساتذتي الكرام 

@jjafferr  @Eng.Qassim   @abouelhassan   @ابوخليل

والى الجميع 

عندي مشكله 

هذا الكود كان المهندس قاسم @Eng.Qassim

ساعدني بيه فى موضوع كنت عملته 

On Error GoTo Errw
Dim i As Integer
DoCmd.GoToRecord , , acFirst
    For i = 1 To Me.Recordset.RecordCount
If (Me.Emp_ABSCENT = False) Or (Me.Vacation = False) Then
Dim Dday As Integer
    Dday = Weekday(Date_today)
    If Dday = 5 Then
    Me.Dwam_Date = Me.txtDatetest
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    Else
    Me.Dwam_Date = Me.txtDatetest
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"
    End If
Else
Me.txtTimeIn.Value = ""
Me.txtTimeIn.Value = ""
End If
DoCmd.GoToRecord , , acNext
    Next i

Exit Sub
Errw:
MsgBox "لقد تم اعتماد الانصراف بنجاح", vbOKOnly

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

اذا كان الموظف غائب او فى اجازة لا يتم اضافة وقت حضور وانصراف له 

وعلشان اقدر اعدل فى التاريخ علشان اسجل الايام السابقه من اول السنه 

اضفت مربع نص وحطيت فيه التاريخ وضميته فى الكود وهو يعمل جيدا

لكن المشكله ان شكلى اخطأت فى مكان OR فى الداله 

If (Me.Emp_ABSCENT = False) Or (Me.Vacation = False) Then

 هل فعلا التركيبه هذه خطأ ؟

لان بيسجل لكله الان 

حاضر غائب اجازة كله

 

جربت طرق كثيره للتغير  بمساعدة استاذي ابوالحسن  @abouelhassan

If (Me.Emp_ABSCENT) Or (Me.Vacation) = False Then
If Me.Emp_ABSCENT = False Or Me.Vacation = False Then

 

If Not (Me.Emp_ABSCENT) = True Or (Me.Vacation) = False Then
If Not (Me.Emp_ABSCENT)  Or (Me.Vacation) = True Then

لكن للاسف مره تعمل على شرط واحد ومره تعمل على الاخر ومره لا تعمل اطلاقا 

 

ايضا هرسل لحضرتك نسخه من البرنامج 

https://www.mediafire.com/file/l8oyy6wi91zg9sq/%D8%AD%D8%B6%D9%88%D8%B1_%D9%88%D8%A7%D9%86%D8%B5%D8%B1%D8%A7%D9%81_%D9%85%D9%88%D8%B8%D9%81%D9%8A%D9%86V2010_v030.rar/file

واسم النموذج هو

frm_DwamToday

 

هذه صورة النموذج الذي به المشكله 

HcDIIS4.png

 

 

تم تعديل بواسطه عمر ضاحى
رابط هذا التعليق
شارك

جرب هذا ووافنا بالنتيجة

'On Error GoTo Errw
Dim i As Integer
Dim Dday As Integer
DoCmd.GoToRecord , , acFirst
    For i = 1 To Me.Recordset.RecordCount - 1
If (Me.Emp_ABSCENT) = True Or (Me.Vacation) = True Then
DoCmd.GoToRecord , , acNext
GoTo nxfor
End If
    
    Dday = Weekday(Date)
   If Dday = 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    ElseIf Dday <> 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"
    
Else
Me.txtTimeIn.Value = ""
Me.txtTimeIn.Value = ""
End If
DoCmd.GoToRecord , , acNext
nxfor:
    Next i

Exit Sub
'Errw:
MsgBox "لقد تم اعتماد الانصراف بنجاح", vbOKOnly

 

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

طبعا ده شرف عظيف لى ان حضرتك ترد علي فى مشكلتى 

والحمد لله الكود يعمل جيدا 

حتى بعدما قمت بعمل تعديل انه يأخذ التاريخ من مربع النص 

كما كنت اريد بالظبط

لكن لاحظت انه لا يعطي ايضا قيمة التاريخ للمثتثني من اضافة الوقت

C9sJlzn.png

  • Like 1
رابط هذا التعليق
شارك

لكنه عندي ظاهر

على كل حال استبدله بهذا التعديل 

On Error GoTo Errw
Dim i As Integer
Dim Dday As Integer
DoCmd.GoToRecord , , acFirst
    For i = 1 To Me.Recordset.RecordCount
If (Me.Emp_ABSCENT) = True Or (Me.Vacation) = True Then
Me.Dwam_Date = Date
DoCmd.GoToRecord , , acNext
GoTo nxfor
End If
    
    Dday = Weekday(Date)
   If Dday = 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    ElseIf Dday <> 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"
    
Else
Me.txtTimeIn.Value = ""
Me.txtTimeIn.Value = ""
End If
DoCmd.GoToRecord , , acNext
nxfor:
    Next i

Exit Sub
Errw:
MsgBox "لقد تم اعتماد الانصراف بنجاح", vbOKOnly

 

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

باشكر حضرتك جدا جدا على مساعدتي

الحمد لله السجل الاخير تم اضافة الوقت فيها

لكن ظلت المشكله الاولى 

U62UrSu.png

 

اسف جدا لو كنت غلبتك معي استاذى الجليل ابو خليل

وربنا يجازيك عنا خير الجزاء 

رابط هذا التعليق
شارك

واعتقد ان هذا الكود 

    Dday = Weekday(Date)
   If Dday = 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    ElseIf Dday <> 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"

اصبح لا يعمل ايضا 

رابط هذا التعليق
شارك

اصلا عند تحضير السجلات تنزل جميع التواريخ

اللي اعمله انا :

1- احذف سجلات الحضور جميعها من الجدول

2- افتح نموذج التحضير  وانقر على تحضير السجلات فتنزل جميع السجلات مع تاريخ اليوم

3- اشغل الكود ... الكود فقط يقفز عن السجلات محل الشرط

المعنى ان التاريخ موجود فعلا .. فلماذا يتغير عندك؟

 

 

 

  • Like 1
رابط هذا التعليق
شارك

شغلته اكثر من مرة وكلها يعطي نتائج صحيحة

Private Sub cmdSetAll_Click()
On Error GoTo Errw
Dim i As Integer
Dim Dday As Integer
DoCmd.GoToRecord , , acFirst
    For i = 1 To Me.Recordset.RecordCount
If (Me.Emp_ABSCENT) = True Or (Me.Vacation) = True Then
Me.Dwam_Date = Date
DoCmd.GoToRecord , , acNext
GoTo nxfor
End If
    
    Dday = Weekday(Date)
   If Dday = 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    ElseIf Dday <> 5 Then
    Me.Dwam_Date = Date
    txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"
    
Else
Me.txtTimeIn.Value = ""
Me.txtTimeIn.Value = ""
End If
DoCmd.GoToRecord , , acNext
nxfor:
    Next i

Exit Sub
Errw:
MsgBox "لقد تم اعتماد الانصراف بنجاح", vbOKOnly
End Sub

 

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

3 دقائق مضت, ابوخليل said:

اصلا عند تحضير السجلات تنزل جميع التواريخ

اللي اعمله انا :

1- احذف سجلات الحضور جميعها من الجدول

2- افتح نموذج التحضير  وانقر على تحضير السجلات فتنزل جميع السجلات مع تاريخ اليوم

3- اشغل الكود ... الكود فقط يقفز عن السجلات محل الشرط

المعنى ان التاريخ موجود فعلا .. فلماذا يتغير عندك؟

 

 

 

انا عامل هذا الزرار علشان اقدر اسجل الايام السابقه مره واحده 

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

انا اذا احببت تغير التاريخ ليوم لم اسجله استطيع وقتها ان اسجل بهذا المفتاح المراد برمجته 

 

هذا بخصوص نقطة التاريخ 

 

اقتباس

3- اشغل الكود ... الكود فقط يقفز عن السجلات محل الشرط

هل يمكن قبل ان يقفز يعدل التاريخ ويقفز دون اضافة وقت الدوام

 

 

 

رابط هذا التعليق
شارك

6 دقائق مضت, عمر ضاحى said:

 

انا اذا احببت تغير التاريخ ليوم لم اسجله استطيع وقتها ان اسجل بهذا المفتاح المراد برمجته 

ما اسم الحقل الذي يحمل قيمة التاريخ السابق ؟  اتوقع ( هذه هي مشكلتك)

 

 

هل يمكن قبل ان يقفز يعدل التاريخ ويقفز دون اضافة وقت الدوام

فعلا انا عملت ذلك

 

 

ثم اعطني خطوات العمل .. كما تجرب انت

 

  • Like 1
  • Thanks 1
رابط هذا التعليق
شارك

1 دقيقه مضت, ابوخليل said:

 

VYWZXLE.png

الكود المفترض يعطينى اخر الدوام الساعه 15:00

لان هذا التاريخ هو ليوم الجمعه 

 

بالنسبه لاسم الحقل

موجود فى هذا الكود 

    Dday = Weekday(Date)
   If Dday = 5 Then
    Me.Dwam_Date = Me.txtDatetest.Value
    Me.txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    ElseIf Dday <> 5 Then
    Me.Dwam_Date = Me.txtDatetest.Value
    Me.txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"

Me.txtDatetest

استاذى الجليل ابو خليل

اعتقد عرفت ليه كود يوم الخميس لم يعمل 

وهذا بسبب انه بيستعلم عن تاريخ اليوم وليس تاريخ المسجل فى الشيت

    
    Dday = Weekday(Me.txtDatetest.Value)
   If Dday = 5 Then
    Me.Dwam_Date = Me.txtDatetest.Value
    Me.txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "15:00"
    ElseIf Dday <> 5 Then
    Me.Dwam_Date = Me.txtDatetest.Value
    Me.txtTimeIn.Value = "07:00"
       Me.txtTimeOut = "16:00"
    

 Dday = Weekday(Me.txtDatetest.Value)

رابط هذا التعليق
شارك

الحقل Me.txtDatetest هذا قيمته ثابتة ولا يمكنك تغييرها وهي تاريخ اليوم

لذا انا وضعت القيمة مباشرة في الكود

  

اقتباس

الكود المفترض يعطينى اخر الدوام الساعه 15:00

لان هذا التاريخ هو ليوم الجمعه 

في الكود  15 ليوم الخميس فقط والذي = 5

اما اذا عملت تحضير يوم الجمعة فسيعطيك كباقي الايام

انت لم تجعل شرطا على ايام العطل

هل تريد الحقل Me.txtDatetest قابل للتعديل بان تكتب فيه تواريخ سابقة ؟

 

  • Like 2
رابط هذا التعليق
شارك

3 دقائق مضت, ابوخليل said:

الحقل Me.txtDatetest هذا قيمته ثابتة ولا يمكنك تغييرها وهي تاريخ اليوم

لذا انا وضعت القيمة مباشرة في الكود

  

في الكود  15 ليوم الخميس فقط والذي = 5

اما اذا عملت تحضير يوم الجمعة فسيعطيك كباقي الايام

انت لم تجعل شرطا على ايام العطل

هذه فاتتني 

لكن لم تفت على مثلك 

طيب الان الكود شغال كويس و

بالنسبه لنقطة التاريخ ال بيتجاهله مش مشكله ممكن ابقى اعدلها يدوي وخلاص 

 

لك جزيل الشكر والعرفان استاذى الجليل ابو خليل

❤️❤️❤️❤️❤️❤️

15 دقائق مضت, ابوخليل said:

ثم اعطني خطوات العمل .. كما تجرب انت

 

خطوات العمل 

1- اتأكد من ان ال فى اجازة مازال لسه فى اجازة من تفعيل الاختيار الخاص بهم

اتأكد من انى علمت على الغائبين

ثم اقوم بعمل تحضير للجميع 

طبعا الملف لسه ناقصه اكود لكن احب ان ابحث عنها اولا واحاول ايجاد حل لها 

وفى حال انى عجزت مثل ما حدث الان 

اعمل موضوع لها

رابط هذا التعليق
شارك

  • أفضل إجابة

تفضل مثالك بعد التمحيص

عدلت على الحقل المذكور  بحيث يظهر افتراضيا تاريخ اليوم

ومع ذلك يمكنك التعديل عليه لتواريخ سابقة

جرب

حضور وانصراف موظفينV2011_v030.rar

  • Thanks 1
رابط هذا التعليق
شارك

8 دقائق مضت, ابوخليل said:

تفضل مثالك بعد التمحيص

عدلت على الحقل المذكور  بحيث يظهر افتراضيا تاريخ اليوم

ومع ذلك يمكنك التعديل عليه لتواريخ سابقة

جرب

حضور وانصراف موظفينV2011_v030.rar 660.77 kB · 2 downloads

الله يعطيك الف عافيه 

ويبارك لنا فيك وما يحرمنا من كرمك علينا 

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information