اذهب الي المحتوي
أوفيسنا

ترقيم تلقائي خاص في حقل واحد حسب النوع


عادلصباح
إذهب إلى أفضل إجابة Solved by ابوخليل,

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

الإخوة القائمين على المنتدى / السلام عليكم ورحمة الله

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

المطلوب عند اختيار النوع طالب يظهر ترقيم تلقائي خاص بالطلاب وعند اختيار مدرس يظهر ترقيم آخر خاص بالمدرسين . فيكون هناك ترقيم لكل منهما تلقائي  مرفق نموذج مصغر

جزاكم الله خيرا

db1.rar

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

السلام عليكم ورحمة _الله_ وبركاته
تفضل أستاذي لعل هذا ما تريد 
لقد قمت بتعديل بعض المسميات الى الإنجليزية 
بعد التحديث لمربع التحرير والسرد يبدأ عمل الترقيم 
A_db1.rar

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

أخي الكريم / أبا عمر

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

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

السلام عليكم ورحمة _الله_ وبركاته
أستاذي الحبيب المعادلة كما يلي 
 

[no] = (s * 1000000) + DCount("[no]", "[tb]", "left([tb]![no],1)=" & [s]) + 1

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

(s * 1000000)

كما يفضل زيادة الرقم عن مليون 

 

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

هناك طريقة أخرى لعمل ترقيم مميز لكل منها وتعتمد على عمل كود مميز بعملومية الترقيم التلقائي لحقل مع رقم المدرس وليكن 1 ورقم الطالب وليكن 2 
فمثلا يكون الترقيم كما يلي 
للمدرس السجل الأول 1_1

للطالب السجل الثاني 2_2

للمدرس السجل الثالث 1_3

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

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

مداخلة بعد اذن اخي الاستاذ ابا عمر

 

 بحيث يكون لكل من المدرس والطالب رقم خاص يبدأ من الرقم واحد لكل منهما

 

وفي حقل واحد ؟ هذا يعني قبول التكرار  اي ان رقم واحد سيتكرر مرتين  ورقم 2 مرتين .... وهكذا

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

ماذا تقول ؟

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

أخي الكريم / أبا عمر

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

فهل يمكنني أتطفل عليكم وأطلب منكم مثال لذلك وجزاكم الله خيرا 

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

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

تم تحديث الحل حسب طلبك الاخير

Private Sub ts1_AfterUpdate()
On Error Resume Next
Dim i, x, z As Integer
i = DCount("no", "tb", "chk=1")
x = DCount("no", "tb", "chk=2")
z = DCount("no", "tb", "chk=3")
If ts1 = 1 Then
Me.no = i + 1
ElseIf ts1 = 2 Then
Me.no = x + 1
ElseIf ts1 = 3 Then
Me.no = z + 1
End If
Me.chk = Me.ts1
End Sub

وانظر التطبيق حيث يلزم اضطرارا  وضع حقل في الجدول يبين النوع

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

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

اخي الكريم / ابو خليل جزاكم الله خيرا على استجابتكم لطلبي ولكن للأسف ليس هذا هو المطلوب .

المطلوب عندما أسجل اسم مدرس أو طالب أو موظف يزيد الرقم السابق واحد 

فعند تسجيل مدرس جديد ويكون أخر رقم لمدرس مثلا 30 يأخذ المدرس الجديد هذا رقم 31 وهكذا بالنسبة للباقي 

ورقم آخر طالب مثلا 30 يكون 31 وليكن هناك حرف للتمييز بينهما فمثلا للمدرس A31  وللطالب B31 أو 1_31 ، وللمدرس 2_31 وهكذا 

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

يا اخي الكريم / ابو خليل 

جزاكم الله خيرا هذا هو المطلوب بالفعل جزيت خيرا وبارك الله فيكم وفي علمكم ونفع بكم المسلمين

ولكن لي سؤال هل يمكن عمل نموذج خاص بأسماء التخصصات مثلا (بدلا من وضع التخصصات في حقل chk وجعل مصدر الصف  "عربي";"1";"انجليزي";"2";"فرنسي";"3" ) فيكون مصدر الحقل من النموذج والذي يقبل اضافة تخصصات له فيما بعد بدلا من الحقل CHk الثابت في بياناته

 أرجو أن اكون وصلت لكم الفكرة 

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

فعند تسجيل مدرس جديد ويكون أخر رقم لمدرس مثلا 30 يأخذ المدرس الجديد هذا رقم 31 وهكذا بالنسبة للباقي 

ورقم آخر طالب مثلا 30 يكون 31

 

هذا بالضبط ما عملته لك راجع المثال مرة اخرى ابدأ بالترقيم من 1

وان اردت ان تبدأ من اي رقم فغير الدالة  Dcount الموجودة في الكود الى DMax

 

 وليكن هناك حرف للتمييز بينهما فمثلا للمدرس A31  وللطالب B31

 

هذا كلام جديد

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

يا اخي الكريم / ابو خليل 

جزاكم الله خيرا هذا هو المطلوب بالفعل جزيت خيرا وبارك الله فيكم وفي علمكم ونفع بكم المسلمين

ولكن لي سؤال هل يمكن عمل جدول خاص بأسماء التخصصات مثلا (بدلا من وضع التخصصات في حقل chk وجعل مصدر الصف  "عربي";"1";"انجليزي";"2";"فرنسي";"3" ) فيكون مصدر الحقل من الجدول والذي يقبل اضافة تخصصات له فيما بعد بدلا من الحقل CHk الثابت في بياناته

 أرجو أن اكون وصلت لكم الفكرة 

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

 

 وليكن هناك حرف للتمييز بينهما فمثلا للمدرس A31  وللطالب B31

 

هذا كلام جديد

 

جديد : لان ماسبق كنا نتعامل مع بيانات الحقل كرقم بالرغم ان نوع الحقل نص

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

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

Private Sub ts1_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    Dim strSQL As String
    Dim i As Integer
    Set db = CurrentDb
    strSQL = "SELECT Max(Right([no1],Len([no1])-1)) AS xc FROM tb WHERE (((tb.chk)=paray()))"
    Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
    If rs.RecordCount > 0 Then
    rs.MoveFirst
    On Error Resume Next
    i = rs![xc]
    If ts1 = 1 Then
    Me.no1 = "A" & i + 1
    ElseIf ts1 = 2 Then
    Me.no1 = "B" & i + 1
    ElseIf ts1 = 3 Then
    Me.no1 = "C" & i + 1
    End If
    End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    Me.chk = Me.ts1
    End Sub

اما  بخصوص حقل  chk فإن المصدر مربع التحرير وليس الجدول

وانما وضعنا الحقل داخل الجدول كي نستخدمه كمعيار ، وانظر اليه في المثال الجديد لتتضح  الرؤية

واما زيادة الفروع مستقبلا فلا يمكننا ذلك الا بتعديل الكود ايضا

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

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

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

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

اخي الكريم / أرجو أن لا تمل من طلباتي وخاصة طلبي الاخير 

وهو أنا قصدت أن اجعل مصدر الحقل CHK  من جدول اخر يوجد تحته مثلا (مدرس ; طالب ; موظف ;  0000 ) بدلا من أن يكون مصدر الحقل CHK  قائمة قيم محددة

حيث يمكني ذلك من استغلاله في جداول اخرى ( تخصصات المدرسين) ، أقسام(تخصص( الكتاب) ديانات ، أدب ، لغات ، تاريخ جغرافيا وهكذا ) وغير ذلك 

جزاكم الله خيرا على صبركم علي وتقبلكم لطلباتي 

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

ممكن  وهو الافضل في غالب الاعمال ولكن  ما عمله الاستاذ ابو عمر  هو الأصح لانه محمي عن التعديل

 

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

 

لان الكود مبني على الارقام الثلاثة  1 ، 2  3 

 

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

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

أستاذي الكبير / أبو خليل 

والله انا مش أقدر أوفي حقكم لذلك أقول لكم كما علمنا الرسول صلى الله عليه وسلم فيما معناه " من صنع لكم معروفا فكافئوه فإن لم تجدوا فقولوا له جزاك الله خيرا " أو كما قال صلى الله عليه وسلم فيما معناه 

لذلك أتوجه الى شخصكم الكريم وأقول لكم جزاكم الله خيرا 

وافيدكم علما بأنني جربت أن أضيف تخصصات أخرى في الجدول وتعديل ما يلزم في كود النموذج وتم بنجاح فلكم جزيل الشكر 

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

أستاذي الكبير / أبو خليل 

ظهرت مشكلة بعدما قمت بتعديل تصميم لدي وجعله يشتمل على حرف مع الرقم وقمت بتعديل ما يلزم لدي كما وضحت لي في النموذج (ترقيم تلقائي منوع 3) والمشكلة أن الترقيم لا يزيد عن الرقم 10 مع كل حرف حيث يعطيني رسالة (لا يمكن الذهاب الى السجل التالي) بعد الرقم عشرة وهذه مشكلة كبيرة بالنسبة لي .

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

وجزاكم الله خيرا

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

  • أفضل إجابة

لا يزيد عن عشرة ؟  لانه ما زال حقلا نصيا  وفي الحقل النصي التسعة اكبر من العشرة بل الاثنان اكبر من العشرة

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

ولكن رقم عشرة موجود فعلا  لذا يرفض اكسس تكرار الرقم .

ومن هنا يتبين  من اين جاءت المشكلة التي تحدث معك .

 

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

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

 
Private Sub ts1_AfterUpdate()
    Dim db As Database
    Dim rs As Recordset
    Dim strSQL As String
    Dim i As Long  ' (1)هذا السطر
    Set db = CurrentDb
    strSQL = "SELECT Max(CLng(Right([no1],Len([no1])-1))) AS xc FROM tb WHERE (((tb.chk)=paray()))" '(2) وهذا السطر
    Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
    If rs.RecordCount > 0 Then
    rs.MoveFirst
    On Error Resume Next
    i = rs![xc]
    If ts1 = 1 Then
    Me.no1 = "A" & i + 1
    ElseIf ts1 = 2 Then
    Me.no1 = "B" & i + 1
    ElseIf ts1 = 3 Then
    Me.no1 = "C" & i + 1
    End If
    End If
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    Me.chk = Me.ts1
    End Sub
رابط هذا التعليق
شارك

اخي الكريم / لي تعقيب ما سبق فقد وقعت في مشكلة كبيرة وهي عدم ظهور عنوان الدورية في النماذج وكذلك عند طباعة التقارير وبالتالي لا يمكن البحث عن عنوان الدورية الا من خلال الرقم وليس بالعنوان وهذه شي صعب ان ابحث بالرقم حيث عنوان الدورية اسهل بكثير ، ثم ان التقارير يجب ان يظهر بعنوان الدورية وبياناتها .

فهل من حل لهذه المشكلة وجزاكم الله خيرا

مرفق لكم المثال ارجو التعديل عليه للتحويل من الرقم الى العنوان مرة ثانية

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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

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

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

Important Information