تحدثنا من قبل عن طريق استخدام أزارر التنقل بين السجلات ..والان سنستخدم كود VBA للتنقل بين السجلات
ولو أردنا أن يتم الانتقال بمقدار 2 خطوة
للأمام عند الضغط على السجل التالي نغير في offset=2 كما هو بالمثال
وعند الانتقال إلى وضع form view نلاحظ عند الضغط على زر الأمر " التالي" ان الزر يقوم بالانتقال إلى السجل بعد التالي وليس التالي أي أن الزر يقوم بالانتقال مقدار 2 خطوة وليس خطوة واحدة
في معظم الأحيان لا نحتاج إلى كتابة الكود الضخم السابق ونسبتدله بالكود البسيط التالي وهو docmd.gotorecord,, فتظهر قائمة منسدلة بها أنواع التنقل فنختر acnext
نلاحظ ان الكود اصبح سهلا بسيطا بالاستغناء عن الخصائص الاختيارية واصبح الكود
للانتقال إلى السجل الأول نكتب هذا الكود
ولكن نلاحظ أنه عند الضغط على السجل السابق وانت واقف على أول سجل ظهور رسالة خطأ كما هو واضح بالشكل والان نريد عدم ظهور مثل هذه الرسائل
نقوم بكتابة هذا الكود On Error Resume Next
نلاحظ انه عند الضغط على السجل السابق وانت في أول سجل ظهور رسالة توضيحية للمستخدم كما هو موضح بالمثال
لدينا هنا نموذج للمنتجات products ونريد وضع أزرار التنقل بين السجلات على
هذا النموذج
نضغط من التبويب Design على زر الأمر
command
button
وتظهر نافذة لاختيار نوع الزر فنضغط على cancel لكتابة الكود بشكل يدوي
نقوم بتنسيق الزر بالحجم المناسب ومن name يمكن
اختيار اسم مناسب له وليكن next ومن caption نختر عنوان له وليكن التالي
ومن event نختر onclick فتظهر نافذة نختر منها code
builder
لكتابة الكود باليد
ثم نقوم بكتابة الأمر docmd.
بمجرد وضع النقطة بجوار الأمر docmd تظهر قائمة منسدلة بها العديد من الأوامر
نختر منها gotorecord ومن objecttype نختر
نوع الكائن وهو هنا نموذج فنختر acdataform وهى خاصية اختيارية ومن objectname نختر اسم
الكائن وهذا النموذج اسمه frmproduts وهى
أيضا خاصية اختيارية ثم نحديد نوع
السجل الذى نريد الذهاب اليه من record=acnext ومن Offset نكتب واحد لو اردنا ان يكون التنقل خطوة
واحدة
وعند الانتقال إلى وضع form
view
نلاحظ عند الضغط على زر الأمر " التالي" ان الزر يقوم بالانتقال إلى السجل التالي مباشرة
وعند الانتقال إلى وضع form view نلاحظ عند الضغط على زر الأمر " التالي" ان الزر يقوم بالانتقال إلى السجل بعد التالي وليس التالي أي أن الزر يقوم بالانتقال مقدار 2 خطوة وليس خطوة واحدة
في معظم الأحيان لا نحتاج إلى كتابة الكود الضخم السابق ونسبتدله بالكود البسيط التالي وهو docmd.gotorecord,, فتظهر قائمة منسدلة بها أنواع التنقل فنختر acnext
نلاحظ ان الكود اصبح سهلا بسيطا بالاستغناء عن الخصائص الاختيارية واصبح الكود
DoCmd.GoToRecord , , acNext
بنفس الطريقة السابقة يمكن انشاء زر أمر اخر ويمكن أيضا نسخ الزر الأول ولصقة للحصول على زر أمر آخر ونقوم بتغيير اسمه لو أردنا وكذلك العنوان له caption
فنقوم بتسمية السجل الأولللانتقال إلى السجل الأول نكتب هذا الكود
DoCmd.GoToRecord , , acFirst
للانتقال إلى السجل الأخير نكتب هذا الكود
DoCmd.GoToRecord , , acLast
للانتقال إلى السجل السابق نكتب هذا الكود
DoCmd.GoToRecord , , acPrevious
للانتقال إلى السجل جديد نكتب هذا الكود
DoCmd.GoToRecord , , acNewRec
شكل أزار التنقل بعد وضعها كما هو بالشكل
ويمكن إعادة تنسيقها كما تحب بالشكل والحجم المناسبولكن نلاحظ أنه عند الضغط على السجل السابق وانت واقف على أول سجل ظهور رسالة خطأ كما هو واضح بالشكل والان نريد عدم ظهور مثل هذه الرسائل
نقوم بكتابة هذا الكود On Error Resume Next
قبل كود التنقل إلى السجل السابق
وهذا الكود يعمل على عدم ظهور رسالة الخطأ
وتخطيها
ويمكن كتابة كود آخر اكثر تفصيلا وهو قبل
الكود نقوم بكتابة هذا الكود On Error GoTo errhandle
وبعد كتابة كود التنقل نكتب exit sub لانهاء الإجراء ثم نكتب
errhandle:
MsgBox "انت فى السجل الأول ولا يوجد سجل سابق"
حيث errhandle المكان الذى نريد أن يذهب إليه البرنامج
عند حدوث خطأ ثم نظهر رسالة توضيحية للمستخدم
ملاحظة يمكن استبدال اسم errhandle باى اسم
اخر تريده
نلاحظ انه عند الضغط على السجل السابق وانت في أول سجل ظهور رسالة توضيحية للمستخدم كما هو موضح بالمثال
ليست هناك تعليقات:
إرسال تعليق