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

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

قام بنشر

السلام عليكم ورحمة الله وبركاته ،،،

السادة الافاضل اعضاء ومشرفي منتدانا المحترم ،

طلبي هو  تحديث مربعات الcheckbox عند فتح النموذج fstart  والخاصة بالتواريخ الاقل من تاريخ اليوم

بمعني عند فتح النموذج ال fstar  يقوم بالتشييك على الجدول tbtable  ويقوم بتحديث مربعات الcheckbod والتي يكون عندها التاريخ اقل من تاريخ اليوم

مرفق صورة توضيحية

وقد حاولت فى الكود التالي ولكن لم يضبط معي

 Set Rs = CurrentDb.OpenRecordset("tbTable", dbOpenDynaset)

If Rs.Fields("check") = False Then
  Rs.MoveLast: Rs.MoveFirst

Do While Rs.Fields("dateend") < Date

Rs.Fields("check") = True
Rs.Edit

Rs.Update
Rs.MoveNext
Loop


End If

 

dateend.rar

كل الشكر والتقدير  احبائي الكرام

 

 

1.JPG

قام بنشر

وعليكم السلام اخي وائل:smile:

 

انا لم انزلت المرفق ، ولكن الكود التالي المفروض ان يفي بالموضوع:smile:

Set Rs = me.recordsetclone

'If Rs.Fields("check") = False Then
  Rs.MoveLast: Rs.MoveFirst

Do While Rs.Fields("dateend") < Date

Rs.Edit
 Rs.Fields("check") = True
Rs.Update

 Rs.MoveNext
Loop


'End If

 

جعفر

قام بنشر

طيب جرب ده

Set rs = CurrentDb.OpenRecordset("tbTable", dbOpenDynaset)
rs.MoveFirst
 
For i = 0 To rs.Fields.Count - 1
If rs!dateend < Date Then
      rs.Edit
      rs!check = -1
      rs.Update
      Else
      rs.Edit
      rs!check = 0
      rs.Update
End If
rs.MoveNext
 
Next
rs.Close
Set rs = Nothing

 

قام بنشر

شوف النموذج الجديد ،

مجرد عملت النموذج ، وخليت الكود اعلاه في الحدث "عند تحميل النموذج"

 

جعفر

646.dateend.mdb.zip

واذا تريده من نفس النموذج الموجود اصلا:

Set Rs = CurrentDb.OpenRecordset("tbTable", dbOpenDynaset)

'If Rs.Fields("check") = False Then
  Rs.MoveLast: Rs.MoveFirst

Do While Rs.Fields("dateend") < Date

Rs.Edit
Rs.Fields("check") = True
Rs.Update

Rs.MoveNext
Loop


'End If
Rs.Close: Set Rs = Nothing

 

جعفر

قام بنشر

أعتقد أستاذنا جعفر أن المشكلة تكمن في كود التنقل بين السجلات Rs.MoveNext

لأنه موجود داخل اللوب الذي يشترط أن يكون التاريخ للسجل أقل من التاريخ الحالي

فاذا لم  يتحقق الشرط فسوف يتم إنهاء اللوب ولن يحدث تنقل بين السجلات

 

قام بنشر

استاذنا الغالي  للاسف  ما ضبط   سامحني

1 - الصورة الاولي

1.JPG.a5e5b974dd0a3aa598fd9bba43c3cafe.JPG

2- عند تغيير التاريخ باول سجل من 8 / 5 / 2017  الي 9 / 5 / 2017

2.JPG.53bcb619f20a6f8ad02da95ce1f38b5a.JPG

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

 

قام بنشر

حياك الله أخي أمير:smile:

 

الكودين شغالين تمام ، لكني اعتمدت على كود اخي وائل بالنسبة لمقارنة التاريخ ، والآن عملت طريقتي ، وهي:


Set Rs = CurrentDb.OpenRecordset("tbTable", dbOpenDynaset)
Rs.MoveLast: Rs.MoveFirst
RC = Rs.RecordCount

For i = 1 To RC

    If Rs.Fields("dateend") < Date Then
        Rs.Edit
            Rs.Fields("check") = True
        Rs.Update
    End If
 
    Rs.MoveNext

Next i

Rs.Close: Set Rs = Nothing
                                  
                                  
                                  
او طريقة النموذج مباشرة
                                  
                                  
Set Rs = Me.RecordsetClone
Rs.MoveLast: Rs.MoveFirst
RC = Rs.RecordCount


For i = 1 To RC

    If Rs.Fields("dateend") < Date Then
        Rs.Edit
            Rs.Fields("check") = True
        Rs.Update
    End If
 
    Rs.MoveNext

Next i

 

جعفر

أخي أمير:smile:

 

يجب ان تبدأ بـ

rs.movelast

قبل
rs.MoveFirst

 

وإلا فلن تحصل على جميع السجلات:smile: 

 

جعفر

  • Like 3
قام بنشر

ممتاز

بس عندي سؤال ولا أتذكر أني سألت من قبل هنا بالمنتدى ههههههه

الكود 

Rs.MoveLast: Rs.MoveFirst

أنا رجحت أن معناه : انتقل للسجل الأخير ثم للسجل الأول ، فاذا كان اعتقادي صحيح فلماذا ينتقل للسجل الأول والمفترض أن ذلك يحدث طبيعاياً عند فتح النموذج ؟

 

قام بنشر

استأذن من الاستاذنا @jjafferr , @أمير2008
رغم من كثرة الاجابات 

اليك هذا 

Private Sub Form_Load()
    Dim sql As String
        sql = "UPDATE tbTable SET tbTable.[check] = True WHERE (((tbTable.dateend)<Date()));"
    DoCmd.SetWarnings False
        DoCmd.RunSQL (sql)
    DoCmd.SetWarnings True

End Sub

 

  • Like 4
قام بنشر

يا سلام بارك الله فيكم جميعا وزادكم الله من فضلة وعلمه

 استاذنا القدير @jjafferr  تسلم ايدك  تماااااام

استاذي الحبيب @Shivan Rekany   تسلم ايدك تمااااااااااااااام

اخي الكريم @أمير2008  بارك الله فيك ولكن مثل ما قال استاذنا جعفر

يجب ان تبدأ بـ

rs.movelast

قبل
rs.MoveFirst

 

وإلا فلن تحصل على جميع السجلات:smile:

 كل الشكر والتقدير وبارك الله قيكم جميعا وجزاكم الله عنا خير الجزاء ،،،

18 دقائق مضت, jjafferr said:

 

 

 

  • Like 1
قام بنشر
10 ساعات مضت, أمير2008 said:

ممتاز

بس عندي سؤال ولا أتذكر أني سألت من قبل هنا بالمنتدى ههههههه

الكود 


Rs.MoveLast: Rs.MoveFirst

أنا رجحت أن معناه : انتقل للسجل الأخير ثم للسجل الأول ، فاذا كان اعتقادي صحيح فلماذا ينتقل للسجل الأول والمفترض أن ذلك يحدث طبيعاياً عند فتح النموذج ؟

 

 

وعليكم السلام:smile:

 

الاكسس ولسرعةعرض البيانات ، فإنه لا ينتظر وصول جميع السجلات/البيانات من الجداول ، لأن المستخدم عادة سيتصفح النموذج (على اعتبار النموذج مستمر او جدولي) ، ثم ينزل الى الصفحة التالية ... وهكذا ،

ولكن في حالتنا ، نريد ان نعرف كم عدد السجلات علشان نعمل Loop ، لذا نريد ان نعرف عدد السجلات ، ثم نبدأ قراءة السجلات من السجل الاول:smile:

 

جعفر

  • Like 2

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