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

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

قام بنشر

الاخوة الافاضل اهل الخبرة 

فى الملف المرفق جدولين 

الاول tblName للاصناف

الثانى TypeName خاص بالنوع

عملت نموذج TypeNam لاضافة النوع ثم اضافة الاصناف الخاصة بكل نوع

اريد عند ادخال كود النوع وليكن 1000 مثلا للنوع الشبسي ثم ادخال اصناف الشبسيات فى نموج الفرعى للاصناف ان يبدأ بترقيم تلقائي ب 10001 و 10002 وهكذا

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

Code.rar

قام بنشر

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

اخى الفاضل @أكسس وبس لو بحثت بالمنتدى لوجدت الكثير من المواضيع

اتفضل اطلع ع المشاركه التاليه لمعلمنا العزيز جعفر جزاه الله عنا كل خير وعدل على مثالك

بالتوفيق

 

قام بنشر

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

 

قام بنشر

وعليكم السلام 🙂

 

في الواقع هناك عدة طرق لتنفيذ اي طلب في الاكسس ، 

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

في 5‏/8‏/2017 at 22:47, jjafferr said:
Private Sub Type_AfterUpdate()

    Me.ID = Nz(DMax("[ID]", "Table1", "[Type]='" & Me.Type & "'"), 0) + 1
End Sub

.

15 ساعات مضت, أكسس وبس said:

جربت المشاركة ولكن ليس هذا المطلوب

.

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

 

جعفر

  • Like 1
قام بنشر

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

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

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

صورة.jpg

Code.rar

  • أفضل إجابة
قام بنشر

تفضل أخي @أكسس وبس 🙂 

image.png.504c249bf995697c911938622973178b.png

تضع هذا الكود في حدث قبل الإدراج للنموذج الفرعي ( وهو نفس كود الأستاذ جعفر بتصرف ) :

Private Sub Form_BeforeInsert(Cancel As Integer)

Me.Number = Nz(DMax("[Number]", "[tblName]", "[typeID] =" & [Forms]![TypeNam]![ID] & ""), [Forms]![TypeNam]![ID]) + 1

End Sub

 

Code.rar

  • Like 3
قام بنشر
16 ساعات مضت, أكسس وبس said:

جربت المشاركة ولكن ليس هذا المطلوب

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

هذا المرفق هو نفس المرفق في مشاركتك الاولى !!

 

 

على العموم ، وكما اخبرتك بأن هناك اكثر من طريقة ، تفضل 3 طرق لعمل الترقيم التلقائي للمواد :

Private Sub Name_AfterUpdate()

'1 DMax
    'only work if the field is empty
'    If Len(Me![Number] & "") = 0 Then
'        Me![Number] = Nz(DMax("[Number]", "tblName", "[typeID]=" & Me.Parent!typeID), Me.Parent!typeID) + 1
'    End If
    
    
'2 Dcount
    'only work if the field is empty
'    If Len(Me![Number] & "") = 0 Then
'        Me![Number] = DCount("*", "tblName", "[typeID]=" & Me.Parent!typeID) + Me.Parent!typeID + 1
'        If Me![Number] = 0 Then
'            Me![Number] = Me.Parent!typeID + 1
'        End If
'    End If
    
    
'3 Recordset
    'only work if the field is empty
    If Len(Me![Number] & "") = 0 Then
        Me![Number] = Me.Recordset.RecordCount + Me.Parent!typeID + 1
    End If
    
End Sub

 

 

جعفر

1518.Code.accdb.zip

  • Like 1
  • Thanks 1
قام بنشر (معدل)
17 دقائق مضت, jjafferr said:

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

هذا المرفق هو نفس المرفق في مشاركتك الاولى !!

 

 

على العموم ، وكما اخبرتك بأن هناك اكثر من طريقة ، تفضل 3 طرق لعمل الترقيم التلقائي للمواد :

Private Sub Name_AfterUpdate()

'1 DMax
    'only work if the field is empty
'    If Len(Me![Number] & "") = 0 Then
'        Me![Number] = Nz(DMax("[Number]", "tblName", "[typeID]=" & Me.Parent!typeID), Me.Parent!typeID) + 1
'    End If
    
    
'2 Dcount
    'only work if the field is empty
'    If Len(Me![Number] & "") = 0 Then
'        Me![Number] = DCount("*", "tblName", "[typeID]=" & Me.Parent!typeID) + Me.Parent!typeID + 1
'        If Me![Number] = 0 Then
'            Me![Number] = Me.Parent!typeID + 1
'        End If
'    End If
    
    
'3 Recordset
    'only work if the field is empty
    If Len(Me![Number] & "") = 0 Then
        Me![Number] = Me.Recordset.RecordCount + Me.Parent!typeID + 1
    End If
    
End Sub

 

 

جعفر

1518.Code.accdb.zip 73.71 kB · 1 download

أنا شكلي استعجلت ودخلت بالعرض 😅

تم تعديل بواسطه Moosak
  • Haha 1
قام بنشر

في اعتقادي ، مشاركة أكثر من شخص في الرد على السؤال ، يفتق الاذهان ويدمج التجارب ويبلور الافكار وفائدة للجميع ، فمنه نتعلم الطرق الاخرى للإجابة على السؤال:rol: 

  • Like 3
قام بنشر
2 ساعات مضت, jjafferr said:
'1 DMax
    'only work if the field is empty
'    If Len(Me![Number] & "") = 0 Then
'        Me![Number] = Nz(DMax("[Number]", "tblName", "[typeID]=" & Me.Parent!typeID), Me.Parent!typeID) + 1
'    End If

بنظري هي الأصح أما الآخريات قد تتسبب في مشاكل عند حذف أحد الأكواد.

لاحظت أكثركم عند استخدام دالة Nz يهمل قيمة False ، ما أدري متعمدين أو سقطت منكم سهوا.

  • Like 1
قام بنشر
3 دقائق مضت, AbuuAhmed said:

بنظري هي الأصح أما الآخريات قد تتسبب في مشاكل عند حذف أحد الأكواد.

شكرا اخوي ابو احمد ،

نعم كلامك صحيح وفي محله ، اذا تم حذف اي صنف في المنتصف (ما عدا الصنف الاخير) ، فالارقام الجديدة ستكون خطأ 🙂

مثلا :

2001

2002

2003

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

 

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

مثلا:

2001

2003

فيصبح آخر رقم 2004 :

Private Sub Name_AfterUpdate()

'1 DMax
    'only work if the field is empty
'    If Len(Me![Number] & "") = 0 Then
'        Me![Number] = Nz(DMax("[Number]", "tblName", "[typeID]=" & Me.Parent!typeID), Me.Parent!typeID) + 1
'    End If
   
    
    
'3 Recordset
    'only work if the field is empty
    If Len(Me![Number] & "") = 0 Then
        If Me.Recordset.RecordCount = 0 Then
            Me![Number] = Me.Parent!typeID + 1
        Else
            Me.RecordsetClone.MoveLast
            Me![Number] = CLng(Me.RecordsetClone("Number")) + 1
        End If
    End If
    
End Sub

.

جعفر

  • Like 1
قام بنشر

جزاكم الله خيرا على مروركم الكريم ولكن بعد تجريب الملف وجدت هناك مشكلة وهى عند اضافة النوع ثم اضافة الاصناف سوف يتم الترقيم تلقائي بناء على كود النوع اما لو هناك اكثر من 50 نوع هنا سوف تكون مشكلة لانى ربما انسى كود نوع وعند ادخال نفس كود لنوع اخر سوف تظهر رسالة بعدم التكرار ولتفادى هذه المشكلة قمت بعمل نموذج خاص بالانواع يتم ادخال جمبع الانواع كلها بعرض نماذج مستمرة وهو TypeNam وعند الضغط دبل كليك على كود النوع يفتح نموذج اخر TypeNam2 لاضافة الاصناف تحت هذا النوع ولكن تظهر رسالة ( ادخال قيمة معلمة )

 

Code.rar

قام بنشر

الخطأ أنك كتبت اسم مربع النص في الكود هكذا :               DoCmd.OpenForm "TypeNam2", , , "[ID]= " & Me.ID

والصحيح أن تكتب اسم الحقل كما هو في الجدول هكذا :     DoCmd.OpenForm "TypeNam2", , , "[typeID]= " & Me.ID

  • Like 1
قام بنشر

جزاك الله خيرا اخى الكريم واستاذناالكبير Moosak بس ولكن حدثت مشكلة عند الضغط وفتح النموذج TypeNam2 يظهر كود النوع واسمه ولكن لا استطيع اضافة اصناف فى النموذج الفرعى 

قام بنشر
26 دقائق مضت, أكسس وبس said:

ولكن لا استطيع اضافة اصناف فى النموذج الفرعى

جربته وهو شغال معي طبيعي 🙂 

أيش يطلع عندك ؟

قام بنشر

عدلت شي في الملف الأخير ؟

14 ساعات مضت, أكسس وبس said:

جزاكم الله خيرا على مروركم الكريم ولكن بعد تجريب الملف وجدت هناك مشكلة وهى عند اضافة النوع ثم اضافة الاصناف سوف يتم الترقيم تلقائي بناء على كود النوع اما لو هناك اكثر من 50 نوع هنا سوف تكون مشكلة لانى ربما انسى كود نوع وعند ادخال نفس كود لنوع اخر سوف تظهر رسالة بعدم التكرار ولتفادى هذه المشكلة قمت بعمل نموذج خاص بالانواع يتم ادخال جمبع الانواع كلها بعرض نماذج مستمرة وهو TypeNam وعند الضغط دبل كليك على كود النوع يفتح نموذج اخر TypeNam2 لاضافة الاصناف تحت هذا النوع ولكن تظهر رسالة ( ادخال قيمة معلمة )

 

Code.rar 34.54 kB · 4 downloads

 

قام بنشر

اذا كان هذا الملف اللي انا ارفقته ، فنعم لا تستطيع ادخال قيمة (حقل كود الصنف مقفل) ،

ولكن لما تدخل اسم الصنف ، تلقائيا تحصل على الرقم التالي 🙂

 

جعفر

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