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

الذهاب إلى الأمام أو الرجوع إلى الخلف بشرط معين


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

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

عندي في النموذج 

زر الذهاب إلى الأمام

زر الذهاب إلى الوراء

أريد مثلا عند الضغط على زر الذهاب إلى الأمام 

أن بذهب إلى الأمام لكن بشرط معين فقمت بإدراج الكود التالي

With Me.RecordsetClone
.FindNext "[Opérateur] =" & [txtSave]
If .NoMatch Then
MsgBox "أنت الآن في السجل الأخير"
Else
Me.Bookmark = .Bookmark
End If
End With

الكود يشتغل تمام إذا كان النموذج يفتح على أول سجل

لكن لو جعلت النموذج يفتح على سجل جديد 

Private Sub Form_Open(Cancel As Integer)
DoCmd.GoToRecord , , acNewRec
End Sub

وقمت بالضغط على زر الرجوع إلى الخلف تأتي الرسالة "أنت الآن في السجل الأول"

وإذا قمت بالضغط على زر إلى الأمام يذهب مباشرة إلى السجل الثاني "طبعا حسب الشرط الموضوع"

هل من حل بارك الله فيكم

Next.zip

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

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

 

اخي العزيز بو عبد الله

 

غير الكود للزر المطلوب الى الكود التالي 

If Me.NewRecord Then
    DoCmd.GoToRecord , , acFirst
    MsgBox "انت الآن في السجل الأول"
Else
    With Me.RecordsetClone
        .FindPrevious "[Opérateur] =" & [txtSave]
        If .NoMatch Then
            MsgBox "انت الآن في السجل الأول"
        Else
            Me.Bookmark = .Bookmark
        End If
    End With
End If

ارجو ان يكون هو ما تقصده

 

بالتوفيق

 

تم تعديل بواسطه يوسف أحمد
  • Like 3
رابط هذا التعليق
شارك

مشكور مشرفنا الغالي يوسف أحمد على الاهتمام

لكن للاسف ليس هذا ما أريده

ما اريده هو 

عند الضغط على زر إلى الوراء 

يرجع بي إلى السجل الأخير الموافق للشرط الذي وضعته

 

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

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

ضع السطر التالي في اول كود الزر الى الوراء

If Me.NewRecord Then Me.RecordsetClone.FindLast "[Opérateur] =" & [txtSave]: Me.Bookmark = Me.RecordsetClone.Bookmark: Exit Sub

ليصبح الكود كاملا

Private Sub Previous_Click()
If Me.NewRecord Then Me.RecordsetClone.FindLast "[Opérateur] =" & [txtSave]: Me.Bookmark = Me.RecordsetClone.Bookmark: Exit Sub

With Me.RecordsetClone
.FindPrevious "[Opérateur] =" & [txtSave]
If .NoMatch Then
MsgBox "ÃäÊ ÇáÂä Ýí ÇáÓÌá ÇáÃæá"
Else
Me.Bookmark = .Bookmark
End If
End With

 



End Sub

بالتوفيق

طبعا باعتبار ان الرقم المراد البحث عنه موجود !

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

4 دقائق مضت, رمهان said:

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

ضع السطر التالي في اول كود الزر الى الوراء


If Me.NewRecord Then Me.RecordsetClone.FindLast "[Opérateur] =" & [txtSave]: Me.Bookmark = Me.RecordsetClone.Bookmark: Exit Sub

ليصبح الكود كاملا


Private Sub Previous_Click()
If Me.NewRecord Then Me.RecordsetClone.FindLast "[Opérateur] =" & [txtSave]: Me.Bookmark = Me.RecordsetClone.Bookmark: Exit Sub

With Me.RecordsetClone
.FindPrevious "[Opérateur] =" & [txtSave]
If .NoMatch Then
MsgBox "ÃäÊ ÇáÂä Ýí ÇáÓÌá ÇáÃæá"
Else
Me.Bookmark = .Bookmark
End If
End With

 



End Sub

بالتوفيق

الكود يعمل 100 % 

بارك الله فيك أستاذنا القدير رمهان

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

لا شكر على واجب اخي العزيز بو عبد الله

 

شكراً لك على التوضيح

 

تفضل الكود بعد التعديل

 

Dim rs As DAO.Recordset
Set rs = Me.Recordset
If Me.NewRecord Then
    rs.FindLast "[Opérateur] =" & [txtSave]
Else
    rs.FindPrevious "[Opérateur] =" & [txtSave]
    If rs.NoMatch Then
        MsgBox "انت الآن في السجل الأول"
    Else
        Me.Bookmark = rs.Bookmark
    End If
End If

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

 

بالتوفيق

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

3 دقائق مضت, يوسف أحمد said:

لا شكر على واجب اخي العزيز بو عبد الله

 

شكراً لك على التوضيح

 

تفضل الكود بعد التعديل

 


Dim rs As DAO.Recordset
Set rs = Me.Recordset
If Me.NewRecord Then
    rs.FindLast "[Opérateur] =" & [txtSave]
Else
    rs.FindPrevious "[Opérateur] =" & [txtSave]
    If rs.NoMatch Then
        MsgBox "انت الآن في السجل الأول"
    Else
        Me.Bookmark = rs.Bookmark
    End If
End If

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

 

بالتوفيق

وهو كذلك مشرفنا الغالي 

جزاك الله كل خير

آآآآآآآآآآآآسف على إتعابك معنا في هذا اليوم المبارك

عيدك مبارك

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

اعتذر لم اشاهد الحل المقدم من قبلك استاذنا العزيز رمهان  ..  ولكن  زيادة الخير بركة ان شاء الله

 

ابداً لا يوجد تعب اخي العزيز بو عبد الله .. شرف لي المشاركة معكم بارك الله فيك

 

 

تم تعديل بواسطه يوسف أحمد
  • Like 1
رابط هذا التعليق
شارك

منذ ساعه, محمد ايمن said:

استاذ رمهان هل من الممكن شرح هذا الكود


Me.Bookmark = Me.RecordsetClone.Bookmark

ابشر استاذ محمد وياذن الله

استاذنك لاحقا وبالتفصيل

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

في 9/11/2016 at 18:04, محمد ايمن said:

استاذ رمهان هل من الممكن شرح هذا الكود


Me.Bookmark = Me.RecordsetClone.Bookmark

اخي الاستاذ ايمن

في قراءة الكتب يتم وضع علامة عند السطر او الصفحة المراد الرجوع لها

وهي قريبة لحد ما الى عمل ال bookmark

فكاني اقول ضع الموشر بسجلات النموذج كما هو المؤشر لدى سجلات recodsetclone 

فانت تبحث وتذهب قدما ورجوعا في سجلات ا recordsetclone  وعندما تستقر عند سجل معين تريد ان النموذج يظهر هذا السجل فتشير له بخاصية ال bookmark  للنموذج ولابد ان تكون القيمة مناسبة فحتما سنسند قيمة ال bookmark ل recordsetclone لخاصية ال bookmark  للنموذج وهنا سيظهر السجل الحالي في ال recordsetclone

وهنا اوضح شي ما :

كائن recodsetclone  للنموذج ما هو الا كائن من نوع recordset  وجميع خصائص وطرق كائن ال recordset يمكن تطبيق مع recodsetclone  

اتمنى ان الشرح مفهوم 

تحياتي

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

في 9/11/2016 at 15:49, رمهان said:

طبعا باعتبار ان الرقم المراد البحث عنه موجود !

لقد واجهتني هذه المشكلة الآن ولم أجد لها أي حل

حيث إذا كان الجدول لا يحتوي على أي قيمة توافق القيمة txtSave التي في النموذج

يقوم بعرض معلومات أخرى لا تطابق الشرط 

ثم بعد ذلك تظهر الرسالة "أنت الآن في السجل الأول"

جربت الكود التالي لكن دائما ما أتلقى الرسالة "لا توجد معلومات لعرضها" سواء وجدت معلومات مطابقة أو لم توجد

 Dim rs As Recordset
 Dim criteria As String
Set rs = CurrentDb.OpenRecordset("tblRealisation", dbOpenSnapshot, dbReadOnly)
criteria = "[Opérateur] =" & Forms!tblRealisation![txtSave]
rs.FindPrevious criteria
If rs.NoMatch = True Then
MsgBox "لا توجد معلومات لعرضها", vbExclamation + vbMsgBoxRight + vbMsgBoxRtlReading, "رسالة تنبيه"
Exit Sub
End If

ملاحظة:

واجهتني نفس المشكلة مع كود أستاذنا يوسف أحمد

هل من حل لهذه المعضلة 

بارك الله فيكم

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

اكتب من الموبايل.... 

اعمل جملة شرطيه if 

احسب فيها السجلات التي تطابق الشرط باستخدام الداله dcount 

ضع الكود السابق اذا كان ناتج الجمله اكبر من صفر 

اما في else 

تضع رساله تبلغك بعدم وجود سجلات تطابق الشرط 

و تخرج من الاجراء  exit sub

سيناريو فقط لم استطع وضع كود من الموبايل

 

بالتوفيق

 

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

هذا تطبيق لكلام الاستاذ يوسف

انظر اول سطر وللزر الوراء

Private Sub Previous_Click()
If DCount("*", "tblRealisation", "[Opérateur] =" & [txtSave]) = 0 Then MsgBox ("no records matched"): Exit Sub

If Me.NewRecord Then Me.RecordsetClone.FindLast "[Opérateur] =" & [txtSave]: Me.Bookmark = Me.RecordsetClone.Bookmark: Exit Sub

With Me.RecordsetClone
.FindPrevious "[Opérateur] =" & [txtSave]
If .NoMatch Then
MsgBox "أنت الآن في السجل الأول"
Else
Me.Bookmark = .Bookmark
End If
 End With



End Sub

وهناك تنبيه اخر اخ ابو عبدالله

لوكنت في السجل الثاني من النموذج ثم كتبت في مربع البحث 392 ثم نقرت للامام ستحصل على السجل صاحب الكود 65 ولن تعود ل 63 وهو يطابق الشرط

بالتوفيق

تم تعديل بواسطه رمهان
  • Like 1
رابط هذا التعليق
شارك

أستاذنا يوسف أحمد بارك الله فيك ورزقك من فضله وشكرا لاهتمامك البالغ

وأنا في غاية الخجل لجعلك تكتب من الموبايل 

أستاذنا رمهان لا أجد من الكلمات ما أعبر به عن امتناني فجزاك الله كل خير وزادك من علمه

بارك الله فيكما ورفع قدركما في الدارين

الكود شغال 100 %

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

اخينا ابو عبدالله

اسمح لي ان ابدي رايي في الاكواد السابقة وخصوصا قي اول مشاركة لك

هذه الاكواد ذكرتني ببداياتي ومع الفيجول بيسك 4

هذه الاكواد فجول بيسكية بحته او ادق هي dao بحته

فهل انت قادم للاكسيس من الفيجول بيسك ؟؟؟؟؟؟؟؟ ترى المحللين لديهم فراسة !!!

مارايك ان اعمل لك اول مشاركة ولكن باكسس بحت ؟ وستلاحظ السهولة والفرق!

وسيكون السناريو كالتالي:

1. يكتب المستخدم الرقم في المربع ثم انتر فتفلتر النموذج على هذه السجلات فقط

2. سيتم التنقل في لبيانات المفلتره بطريقة عادية واوامر معروفة سواء للخلف او للامام

3.عند مسح البحث ثم انتر تظهر جميع البيانات

بالتوفيق

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

مشكوووووووووووووور أستاذنا الكريم رمهان

هذا عرض مغري لا يسعني رفضه

وأنا في أتم الاستعداد للتعلم

إذا سمحت سأرسل لك القاعدة التي أشتغل عليها

وإذا توفر لك الوقت أرجوا أن تلقي نظرة عليها

 

لا تنسى الضغط على shift عند الدخول :biggrin:

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

اخي ابو عبدالله

العرض يشمل فقط:

15 ساعات مضت, رمهان said:

مارايك ان اعمل لك اول مشاركة ولكن باكسس بحت ؟ وستلاحظ السهولة والفرق!

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

لي عودة في اقرب فرصة بالتطبيق والتعديل

تحياتي

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

اذا سمح لي استاذي رمهان باضافة مرفق يعتمد على اكواد SQL في البحث و التصفية

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

17 ساعات مضت, رمهان said:

1. يكتب المستخدم الرقم في المربع ثم انتر فتفلتر النموذج على هذه السجلات فقط

2. سيتم التنقل في لبيانات المفلتره بطريقة عادية واوامر معروفة سواء للخلف او للامام

3.عند مسح البحث ثم انتر تظهر جميع البيانات

سؤال جانبي : هل لغتك الفرنسية جيدة ؟؟

Next2.rar

تم تعديل بواسطه محمد ايمن
  • Like 3
رابط هذا التعليق
شارك

كفيت ووفيت استاذ محمد ايمن 

وهذه بطريقة الفلترة  :

Private Sub txtSave_AfterUpdate()
If IsNull(Me.txtSave) Then Me.FilterOn = False: Exit Sub
Me.Filter = "[Opérateur] =" & [txtSave]
Me.FilterOn = True
End Sub

وتظل ازرار التنقل بكود الاستاذ محمد ايمن كماهي وهي فعلا ماكنت اقصده من اوامر سهلة 

6 ساعات مضت, محمد ايمن said:

اسؤال جانبي : هل لغتك الفرنسية جيدة ؟؟

للاسف استاذ محمد ولا حتى الاحرف !!

تحياتي للجميع

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

6 ساعات مضت, محمد ايمن said:

سؤال جانبي : هل لغتك الفرنسية جيدة ؟؟

اعتقد ان السؤال موجه لك اخينا ابو عبدالله ؟

واعتقد انه نعم حيث اخينا ابو عبدالله من الجزائر !

تحياتي للجميع

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

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

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

أستاذنا رمهان 

آآآآسفي على طمعي 

أنا في انتظار التطبيق 

 

أستاذنا محمد أيمن أشكر لك اهتمامك و مشركتنا بعلمك 

وأنا في انتظار المزيد "سأقوم بتجريب الكود وأوافيك بالنتيجة"

 

أما بخصوص اللغة الفرنسية فبين وبينها ثأر قديم

ولغتي الإنكليزية أحسن منها بكثير

لكن استطيع متابعة الدورات التعليمة باللغة الفرنسية خاصة التقنية منها 

 

أما إذا كنت تريد شيء باللغة الفرنسية فأعرف من يمكن أن يساعد

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

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