اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

الحل الأمثل لمشاكل الترقيم التلقائي


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

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

الكل يعلم أن هناك مشاكل عديد تحصل عند حقل من نوع ترقيم تلقائي، و من أهمها التسلسل عند حذف سجل معين يختل التسلسل الرقمي.

لذلك اقترح حلا ربما يكون مناسبا لتعويض حقل الترقيم التلقائي.

هذا الحل يقوم بما يلي :

1- إضافة رقم تلقائيا و متسلسلا كلما أضفنا سجل جديد.

2- يقوم بإعادة ترقيم جميع السجلات عند حذف سجل معين من أجل الحفاظ على التسلسل الرقمي.

الكود كالتالي:

في حذث الحالي للنموذج نكتب:

Me.الرقم = CurrentRecord

في حدث عند النقر لزر الحذف نكتب:

On Error Resume Next
DoCmd.RunCommand acCmdDeleteRecord
Me.Requery
DoCmd.GoToRecord , , acNext
For i = 1 To Me.Recordset.RecordCount
Me.الرقم = CurrentRecord
Next i
DoCmd.GoToRecord , , acLast

لكم التعليق و الإضافة أو  إكتشاف الأخطاء  و تحسينها.

                     تقبلوا تحيات أخوكم صالح حمادي...

تعويض الترقيم التلقائي.rar

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

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

اسعد الله صباحك بكل خير

 

طيب اذا كان هناك حقول فارغه بالجدول

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

 

هل من حل

مشكله المثال المرفق هو حساب العدد

وليس تصحيح الارقام

 

قم بحذف سجلات من الجدول

ومن ثم ارجع ل النموذج واضف سجل جديد

ستلاحظ  ما اتكلم عنه

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

السلام عليكم شكرا أخي على هذه الملاحظة المهمة.

3 ساعات مضت, co2002co said:

طيب اذا كان هناك حقول فارغه بالجدول

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

لا يمكن اضافة حقول فارغة بعد الآن لقد أصحلت الأمر حتى و لو قمت بالضغط المتكرر على انتر.

3 ساعات مضت, co2002co said:

مشكله المثال المرفق هو حساب العدد

وليس تصحيح الارقام

 

قم بحذف سجلات من الجدول

ومن ثم ارجع ل النموذج واضف سجل جديد

ستلاحظ  ما اتكلم عنه

أما هذه الملاحظة فلم أفهمها يا ريت أخي تعاود تشرح أكثر.

 

 

 

تعويض الترقيم التلقائي.rar

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

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

اسعد الله مسائك بكل خير

 

 

شغل عدل ويعطيك الف عافيه

 

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

الي قصدته بالمثال السابق هو الاتي

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

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

اما الرقم التسلسلي فوق 12 او اكثر

 

 

 

 

ملاحظتي على التعديل الجديد

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

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

بس لما يتم تغيير التسلسل اعتقد ضاع كل شي

 

مثالك اكثر من رااااااائع خصوصا للي ما يهمه الرقم ك مرجع اساسي

وبعد عجبتي بساطة الكود

 

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

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

اخي صالح

اسمح لي بالتعقيب

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

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

1. الكود خلف زر الحذف

Private Sub حذف_Click()
On Error Resume Next
DoCmd.RunCommand acCmdDeleteRecord
Me.Requery
For i = 1 To Me.Recordset.RecordCount
Me.الرقم = CurrentRecord
DoCmd.GoToRecord , , acNext
Next i
End Sub

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

2. حدث سجل جديد

Private Sub اضافة_Click()
DoCmd.GoToRecord , , acNewRec
Me.الرقم = CurrentRecord
End Sub

كما ان هناك تنبيه انه يمكن ان ياخذ حقل الرقم قيمة الدوران i بدلا من currentrecord فهما نفس القيمة

بالتوفيق

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

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

 

7 ساعات مضت, co2002co said:

ملاحظتي على التعديل الجديد

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

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

بس لما يتم تغيير التسلسل اعتقد ضاع كل شي

أخي لك جزيل الشكر على الملاحظات التي تقدمها.

أعتقد أن الذي يعتمد على رقم الفاتورة لا يهمه أمر تسلسل الأرقام فهو ليس لديه مشكلة مع الترقيم التلقائي.

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

اخي صالح

اسمح لي بالتعقيب

أخي و أستاذي رمهان مشكور على المداخلة و يسرنا تعقيبك على هذه المواضيع فهذا يجعلنا نستفيد منك الكثير جزاك الله كل خير.

بارك الله فيك على التعديل الذي أجريته فقد مكننا من تحسين الكود و عمل البرنامج.

فقط أضيف هذا الكود لإخفاء الرسائل التحذيرية الخاصة بالحذف.

DoCmd.SetWarnings False
DoCmd.RunCommand acCmdDeleteRecord
DoCmd.SetWarnings True

ليصبح الشكل الجديد للبرنامج كما في المرفق:

 

تعويض الترقيم التلقائي.rar

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

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

مشكور اخي صالح على هذه المشاركة

ولكن لي ملاحظة بسيطة: لو كان عدد السجلات يفوق 2000 سجل

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

أنا أفضل ان يتم وضع الكود تحت زر امر وعند الانتهاء من اضافة او حذف السجلات نضغط مرة واحدة

 

::

تحياتي

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

ملاحظتي على التعديل الجديد

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

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

بس لما يتم تغيير التسلسل اعتقد ضاع كل شي

 

انا اتكلم اذا كان رقم التسلسل هو نفسه رقم الفاتوره

فاتوره رقم 1

فاتورة رقم 2

رفاتوره رقم 3

الخ

يعني لو حذفت فاتورة رقم 2

راح تحل فاتوره رقم 3 مكان فاتوره رقم 2

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

10 ساعات مضت, alwazeer said:

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

مشكور اخي صالح على هذه المشاركة

ولكن لي ملاحظة بسيطة: لو كان عدد السجلات يفوق 2000 سجل

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

أنا أفضل ان يتم وضع الكود تحت زر امر وعند الانتهاء من اضافة او حذف السجلات نضغط مرة واحدة

و عليكم السلام و رحمة الله و بركاته أخي الوزير شرفتنا بمشاركتك معنا.

نعم هذه الملاحظة جد مهمة في حال أننا حذفنا أكثر من سجل سوف يكون لدينا الكثير من الوقت الضائع و هذه الملاحظة تجعلنا نستفيد من هذا الوقت. شكرا جزيلا أخي

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information