الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كود السجل الاخير

مغلقمُجاب
بدأه سالم فتحي في 18 يناير 2014 · 5 رد · 2,123 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

 

لدي في النموذج زر للانتقال الى الزر الاخير  فيه الكود التالي

If CurrentRecord < DCount("ID", "data") Then
DoCmd.GoToRecord , , acLast
Else
 MsgBox "No More Record"
End If

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

 

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

 

فعند الضغط على الزر لاتظهر رسالة تنبه بانه في السجل الاخير من ناتج التصفية ..

 

فكيف اعدل الكود ليقوم بهذه المهمة

 

وشكرا 

#2

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

غير الكود الى:

If CurrentRecord < Form.Recordset.RecordCount Then
DoCmd.GoToRecord , , acLast
Else
 MsgBox "No More Record"
End If
1
#3

شكرا اخي الكريم  بارك الله بك

 

ممكن سؤال

 

مالفرق بين 

If CurrentRecord < DCount("ID", "data") Then

وبين

If CurrentRecord < Form.Recordset.RecordCount Then

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

#4

واذا اردنا تطبيق نفس الطريقة لكن على زر   FIRST  وليس  LAST

كيف يكون شكل الكود  ..

 

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

If CurrentRecord = 1 Then
MsgBox "No Previous Record"
Exit Sub
Else
DoCmd.GoToRecord , , acFirst
End If
#5 أفضل إجابة

اخي العزيز على الرغم انا لا اجيد كتابة عربية صحيحة، ساشرح لك الاجابة على القدر مستطاع. 

 

الفرق بين DCount("ID", "data") و Form.Recordset.RecordCount :

DCount("ID", "data") يعني عدد سجلات حسب حقل ID  في جدول/استعلام  data

 

 

و Form.Recordset.RecordCount يعني عدد سجلات المعروضة على الصفحة النموذج سواء كان قبل او بعد تصفية

If CurrentRecord < DCount("ID", "data") Then
'اذ كان مرتبة سجل الحالي(حسب تسلسل سجلات)اقل من عدد سجلات جدول/استعلام داتا
DoCmd.GoToRecord , , acLast
'ثم ينتقل التركيز الى السجل الاخير
'ركز الان لنفترض عدد سجلات في جدول (داتا) خمسون سجلا و عدد سجلات نموذج بعد تصفية خمسة سجل
'السجل الخامس في النموذج يعتبر السجل الاخير و اقل من خمسون في نفس الوقت(يرجع الخطاء)
'و الكود الجديد لايرجع الخطاء لان عدد سجلات خمسة  و سجل الخامس هو سجل الاخير(يرجع الصح)
Else
 
MsgBox "No More Record"
End If
If CurrentRecord < Form.Recordset.RecordCount Then
'اذا كان مرتبة السجل الحالي(حسب تسلسل سجلات)اقل من عدد سجلات معروضة في النموذج
DoCmd.GoToRecord , , acLast
'لينتقل التركيز الي السجل الاخير
Else

 MsgBox "No More Record"
End If

و الكود للنقل تركيز الى سجل الاول صحيح 100%100

تم تعديل هذه المشاركة بواسطة ابوشفيق في 18 يناير 2014 في 20:43

1
#6

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

هذا الموضوع مغلق.

مواضيع مشابهة