تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
التعديل على كود انشاء ترقيم تلقائي ذاتي
#3
السلام عليكم...

الترقيم التلقائي العددي في جميع محركات قواعد البيانات يعمل في اتجاه واحد و هو الزيادة دون تكرار مع عدم إعادة استعمال القيم التي تم تجاوزها حتى و إن حُذفت. و هذا برايي مشابه للواقع! فإذا كان لدي مثلاً طلبية برقم معين ثم تم إلغاء (حذف) تلك الطلبية فلا يعني ذلك أن لدي خللاً في نظام الترقيم. ببساطة هو يعني أن لدي طلبية ملغية رقمها كذا. و إذا كان لدي طالب برقم قيد معين ثم انتقل إلى مدرسة أخرى فلا يجوز أن أعطي رقمه لطالب آخر... إلخ.

و نقطة مهمة أخرى و هي أنه إذا كنا لا نستعمل حقل الترقيم التلقائي في الربط مع جداول أخرى فربما لا بأس من إعادة الترقيم لملء الأرقام المحذوفة، أما إذا كان ذلك الحقل يُستعمل لربط الجدول مع جداول أخرى فإن إعادة الترقيم ستتسبب في كارثة.

الكود المرفق مع السؤال هو كود VBA مأخوذ من Access. و هو - في الحقيقة - كود بدائي، فاستعمال الوظيفة MoveLast للانتقال إلى آخر سجل (في الإجراء BeforeInsert) قد يؤدي إلى تحميل كمية كبيرة من السجلات في الذاكرة. و كذلك الحال مع استعمال حلقة While (في الدالة Init_numeroAuto) حيث سيمر على السجلات واحداً واحداً ! تصور لو أن قاعدة البيانات تحتوي على مئات الآلاف أو الملايين من السجلات... سيستغرق ذلك وقتاً لا بأس به و قد يتوقف البرنامج عن الاستجابة.

على أية حال... في المرفقات مشروع صغير به كل ما تطلب: الحصول على رقم جديد تلقائياً عند الإضافة و إعادة الترقيم فقط بعد الحذف للمحافظة على تسلسل الآرقام.

ستجد في الكود أن إجراء إعادة الترقيم قصير جداً و لا يعتمد على الحلقة التكرارية:
كود :
Private Sub RenumberRecords(ByVal ATable As String, ByVal IDField As String, ByVal DeletedID As Long)
   Dim SQL As String
   
   SQL = "UPDATE " & ATable & " SET " & IDField & " = (" & IDField & " - 1) WHERE (" & IDField & " > " & CStr(DeletedID) & ")"
   Cnn.Execute SQL
End Sub

يحتوي الكود أيضاً على بعض الدوال و الإجراءات المساعدة و التي يمكنك نقلها إلى Module مع تحويل Private إلى Public لاستعمالها في أكثر من Form و في أكثر من مشروع.

نرجو الاستفادة و السلام.


الملفات المرفقة
.rar   Manual Number.rar (الحجم : 11.87 ك ب / التحميلات : 534)
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ
الرد }}}
تم الشكر بواسطة: Ahmed_Mansoor , suliman alahdl , suliman alahdl , ola


الردود في هذا الموضوع
التعديل على كود انشاء ترقيم تلقائي ذاتي - بواسطة ناجي إبراهيم - 08-04-13, 07:39 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] إظهار رسائل تنبيه تلقائي ع سطح المكتب aboezzat84 0 506 07-01-24, 02:27 PM
آخر رد: aboezzat84
  [vb6.0] كيف اجعل المستخدم التعديل على الأرقام في text1 فقط ولا يمكن مسحها ؟ Microformt 2 1,716 18-12-21, 01:41 PM
آخر رد: اسلام الكبابى
  شرح طريقة انشاء barcode بسهوله ولد رائع 4 6,042 22-06-19, 08:06 PM
آخر رد: ابن دوعن
  [مثال] المساعدة - باعادة ترقيم الداتا ريبورت سامى 2 2,879 30-01-18, 03:24 PM
آخر رد: سامى
  [كود] التعديل على هذا الكود جزاكم الله خيراً عبد الرحمن على 14 6,128 09-05-17, 06:56 PM
آخر رد: عبد الرحمن على
  هل في الامكان انشاء فورم يتم إستدعاء الصوره من الماسح الضوئي (Scanner) مباشره ؟؟ softmail8 7 4,667 09-02-17, 12:15 AM
آخر رد: عمور2016
  سوال حول ترقيم تلقائي m_shrif 1 2,624 21-01-17, 06:33 PM
آخر رد: Ashraf Elafify
  [vb6.0] ارجو التعديل amer2000 2 2,459 08-08-16, 03:02 PM
آخر رد: amer2000
Smile انشاء مشروع في الvb.6 كترينا 0 2,285 07-07-16, 08:15 PM
آخر رد: كترينا
  وضع علامة ونص على الصورة وحفظها بعد التعديل أبو عمر 3 3,375 03-10-15, 02:24 PM
آخر رد: أبو عمر

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم