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

المساعدة فى التحكم فى تكويد الاصناف حسب كود نوعه


أكسس وبس
إذهب إلى أفضل إجابة Solved by Moosak,

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

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

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

الاول 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 يظهر كود النوع واسمه ولكن لا استطيع اضافة اصناف فى النموذج الفرعى 

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

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

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