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

كيف تصنع ترقيم تلقائي بنفسك ؟

مغلق
بدأه أشرف خليل في 3 فبراير 2002 · 9 رد · 1,158 مشاهدة · في مراجعة المواضيع
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

قم بالخطوات التالية :

1- إنشيء جدولا وليكن جدول 1 وبه الحقول التالية

رقم - الاسم

2- إنشء نموذج مبنى على هذا الجدول

3- من الخصائص للحقل رقم وفى صفحة التنسيق ضع الكود التالي فى خاصية القيمة الافتراضية

=DMax("رقم";"جدول1")+1

يفضل فى خاصية علامة جدولة من صفحة غير ذلك من الخصائص أن تضعها لا وحتى تتخطى هذا الحقل فى الإدخال .

أشرف خليل :) :)

#2

طريقة جيدة للترقيم التلقائي .

خاصية القيمة الافتراضية في صفحة التبويب بيانات .

لكن يبدو أخ أشرف أنك لم تجرب الطريقة والجدول فارغ من السجلات ;)

وإلا لن يظهر ترقيم ، وقد عدلت في الكود كالتالي :

=IIf(IsNumeric(DMax("رقم";"جدول1")+1)=خطأ;1;DMax("رقم";"جدول1")+1)

مع وضع خاصية مؤمن إلى نعم .

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

#3

الأخ أشرف وأبوحمود

تحياتي لنجمي هذا المنتدى

حال أخر لمشكلة الترقيم في جدول فارغ

=nz(DMax("[حقل الترقيم التلقائي]";"[lسم الجدولl]"))+1
#4

نعم هذا أفضل حل .

شكراً لك .

ولك تحياتي

#5

فعلا حل ممتاز وبسيط ويتميز هذا الترقيم بأنك تستطيع إدخال الرقم المحذوف مرة أخرى .

أشرف خليل

#6

أيضاً

يمكن أن تجعل الرقم يبدأ مثلا بـ 1000 أو أي رقم تكتبة في حقل الأرقام

ثم يقوم الكود بالترقيم التلقائي

ولكن هناك مشكلة بسيطة

أن الرقم المحذف يرجع عندما تغلق النموذج ولا يسبقة رقم آخر

#7

الأخ new

بودي أن توضح المشكلة بشكل أكبر مع ضرب مثال بالأرقام ليسهل فهم المشكلة .

ولك تحياتي

#8

الأخ new

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

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

أشرف خليل

#9

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

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

هذه بعض الحالات التي قد تواجهك عند عمل ترقيم متتالي والتي تتميز فيها الدوال عن التعابير الرياضيه :

* اعطاء المستخدم الخيار في نوع الترقيم المتتالي (معتمد على الوقت ، متتالي ، بدون ...) ؟

* احيانا يحتاج المستخدم لتخزين أكثر من رقم ابتدائي بناءا على معلومة أخرى مثال :

لدى المحاسب ثلاث دفاتر شيكات باسم المؤسسة كل دفتر لبنك مختلف . وكل دفتر يبدأ من ترقيم معين .. كيف نستخلص الرقم المتتالي في هذه الحالة ؟

الحل يوضع حقل في جدول حسابات البنوك باسم الرقم الابتدائي ومنه نغير لكل بنك أول رقم في دفتر الشيكات ..

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

الآن نضع في القيمة الإفتراضيه لمربع النص :

=NextNum()

وهذه هي الدالة :

Function NextNum() As String
  Dim YDB As Database, RMaxNum As Recordset '

 'استخراج اعلى رقم للشيكات ان كان موجودا
  Set YDB = DBEngine.Workspaces(0).Databases(0)
'فتح السجل وبناء جملة الاستعلام 
 Set RMaxNum = YDB.OpenRecordset("SELECT Max([Check Number])" _
        & " AS [Max Check Num] FROM [Checks]" _
        & " WHERE [Account Number] = '" _
        & Forms![Check Editor]![Bank Account] & "'", dbOpenSnapshot)

  If Not IsNull(RMaxNum.Fields(0).Value) Then
      NextNum = CStr(RMaxNum("Max Check Num") + 1)
    Else

     'اذا لم يكن موجودا استخرج الرقم الابتدائي من جدول حسابات البنوك 
      Dim curdb As Database, BA As Recordset, strSQL As String
      Set curdb = DBEngine.Workspaces(0).Databases(0)

          'بناء جملة الاستعلام
      strSQL = "SELECT [Bigging Check Number]" _
      & " FROM [Bank Accounts] WHERE [Bank Account Number] = '" _
      & Forms![Check Editor]![Bank Account] & "'"


      Set BA = curdb.OpenRecordset(strSQL, dbOpenSnapshot)
If Not IsNull(BA.Fields(0).Value) And _
         BA![Bigging Check Number] > 0 Then
        NextNum = CStr(BA![Bigging Check Number])
       Else

     'اذا لم يوجد رقم ابتدائي افرض رقما .
        NextNum = "0100"


      End If
      BA.Close
      curdb.Close
  End If
  RMaxNum.Close

End Function
#10

أخي أبو لمى :

شكرا كثيرا على مشاركتك ولو أنني أود مشاركتك بصفة مستمرة وليست على فترات .

والله يعينك .

أشرف خليل

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

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