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

التنبيه بوجود صنف مكرر بسجلات النموذج الفرعي


wael_rafat

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

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

اخوني الكرام

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

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

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

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

     Dim i As Integer
     Dim rs As Recordset
     Set rs = Me.F_ordersubform.Form.RecordsetClone
     rs.MoveLast
     R = rs.RecordCount
     rs.MoveFirst
     For i = 1 To R
     If IsNull(rs!Qty) Then
     MsgBox " íæÌÏ ÇÕäÇÝ ÈÇáÝÇÊæÑÉ ÈÏæä ßãíÉ ... ÇÏÎá ÇáßãíÉ ÇæáÇ", vbCritical, " ÈÏæä ßãíÉ "
     Exit Sub
     End If
     rs.MoveNext
     Next
     rs.close
     Set rs = Nothing
 

مرفق صورة توضيحية  والقاعدة .

ولكم جزيل الشكر .,,,

 

 

Capture.JPG

KFC.rar

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

وعليكم السلام :smile:

 

انا اعتقد ان الطريقة الصحيحة هي ،

  1. عند إضافة صنف ،
  2. الكود يجب ان يتأكد من وجود الصنف على القائمة او لا:
  • اذا الصنف غير موجود ، فيتم إضافة الصنف كالعادة ،
  • اذا كان الصنف موجود ، فيجب الذهاب الى ذلك السجل ، واجراء العملية عليه (سواء + او -) مثلا :smile:

 

جعفر

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

استاذنا الغالي جعفر

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

ولكن هذا الموضوع مختلف 

وطلبي ما تفضلت وذكرته اعلاه  مع تغيير بسيط وهو :

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

ملحوظة : النظام يعمل بطريقة الشاشة اللمس

وجزاك الله كل خير استاذي الكريم

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

حيا الله الجميع

اخ وائل ممكن تقول اين الاختلاف مع الموضوع التالي:

http://www.officena.net/ib/topic/61544-اضافة-صنف-الى-النموذج-الفرعي-من-خلال-رز-امر-بالنموذج-الرئيسي/?page=2

هل فقط الاختلاف التنبيه فقط : اذا كان هو فاعتقد التعديل سهل جدا وعلى الموضوع السابق !

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

http://www.officena.net/ib/topic/63159-الذهاب-لسجل-موجود-عند-الاضافة/

بالتوفيق

 

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

حيا الله الجميع

اخ وائل ممكن تقول اين الاختلاف مع الموضوع التالي:

http://www.officena.net/ib/topic/61544-اضافة-صنف-الى-النموذج-الفرعي-من-خلال-رز-امر-بالنموذج-الرئيسي/?page=2

هل فقط الاختلاف التنبيه فقط : اذا كان هو فاعتقد التعديل سهل جدا وعلى الموضوع السابق !

 

نعم استاذي الفاضل انا اريد فقط التنبيه بوجود الصنف 

وعليه تكون الصورة كالتالي:-

 عند الضغط على الصنف  هناك امرين :

1 - فى حالة عدم وجود الصنف بالسجلات يقوم بالاضافة العادية بغض النظر عن العدد ( 1 - 2 - 3..... الخ ) ... ( وهذا مطبق وموجود حاليا بالمرفق ) .

2- في حالة وجود الصنف بالسجلات يقوم فقط باعلامي او تنبيهي بوجود هذا الصنف ( من خلال رسالة تنبيهية بالاستمرار او الانتقال الى هذا الصنف المضاف مسبقا للتعديل عليه )

اتمني تكون الصورة واضحة ... وجزاك الله كل خير  استاذنا الجميل رمهااان . 

 

 

 

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

2- في حالة وجود الصنف بالسجلات يقوم فقط باعلامي او تنبيهي بوجود هذا الصنف ( من خلال رسالة تنبيهية بالاستمرار او الانتقال الى هذا الصنف المضاف مسبقا للتعديل عليه )

بالاستمرار : ماذا تقصد هنا الاستمرار الى اين ! لم افهمه خاصة ان الخيار الاخر هو الانتقال الى الصنف للتعديل عليه !  ام انك تقصد عدم الاستمرار ولغاء الامر ؟!!

تحياتي

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

تفضل ولعله ماطلبت لانه بصراحة لي تحفظ على طريقة الكود لديك ولكنك اخ وائل مصر عليه !

كما يمكنك اخذ فكرة الاخ حسين هنا

http://www.officena.net/ib/topic/64121-ادراج-الكميه-في-مربع-حوار-استعلام-من-خلال-لوحة-ارقام-مصممه-داخل-النموذج/

خصوصا انه يبدو اخذ فكرة الزيادة والنقصان من برنامجك !:wink2:

Sub mm(xx)
Set rs = Me.F_ordersubform.Form.RecordsetClone
rs.FindFirst "itemcode='" & xx & "'"
If Not rs.NoMatch Then
If MsgBox("الصنف موجود.. الاستمرار؟", vbYesNo) = vbYes Then
[Forms]![f_order]![F_ordersubform].SetFocus
  DoCmd.GoToRecord , , acNewRec
  End If
  End If
 If IsNull([Forms]![f_order]![F_ordersubform]![itemcode]) Then

  [Forms]![f_order]![F_ordersubform]![itemcode] = xx
  DoCmd.Beep
  [Forms]![f_order]![F_ordersubform].SetFocus
  DoCmd.GoToControl "itemcode"
  DoCmd.GoToControl "qty"
  [F_ordersubform]![Qty].SetFocus
  [Forms]![f_order]![F_ordersubform]![price] = DLookup("item_sale", "tmenu", "itemcode='" & xx & "'")
  [Forms]![f_order]![F_ordersubform]![Qty] = 1
  
      
   ElseIf ([Forms]![f_order]![F_ordersubform]![itemcode]) = xx Then
  [Forms]![f_order]![F_ordersubform]![Qty] = Nz([Forms]![f_order]![F_ordersubform]![Qty]) + 1
 
  ElseIf ([Forms]![f_order]![F_ordersubform]![itemcode]) <> xx Then
  [Forms]![f_order]![F_ordersubform].SetFocus
  DoCmd.GoToRecord , , acNewRec
  [Forms]![f_order]![F_ordersubform]![itemcode] = xx
  DoCmd.Beep
  [Forms]![f_order]![F_ordersubform].SetFocus
  DoCmd.GoToControl "itemcode"
  DoCmd.GoToControl "qty"
 [F_ordersubform]![Qty].SetFocus
 [Forms]![f_order]![F_ordersubform]![price] = DLookup("item_sale", "tmenu", "itemcode='" & xx & "'")
 [Forms]![f_order]![F_ordersubform]![Qty] = 1
 Else
 [Forms]![f_order]![F_ordersubform]![Qty].Requery
 End If

    Me.F_ordersubform.SetFocus
    DoCmd.RunCommand acCmdSaveRecord
   ' DoCmd.GoToRecord , , acLast
   ' Me.F_ordersubform!Qty.SetFocus
    
End Sub

بالتوفيق

 

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

استاذي الغالي رمهان

سامحني غلبتك معي ... ولكن الكود بهذا الشكل اختلف تماما في طريقة الاداء

واعتقد ان الطريقة الاولي هي الافضل 

وهي كود عند الضغط على زر الحفظ وعند وجود تكرار رقم الصنف فى السجلات يقوم بتنبيهي فقط  للعلم

نفس فكرة الكود لتنبيهي على وجود كميات فارغة  وهو

Dim i As Integer
     Dim rs As Recordset
     Set rs = Me.F_ordersubform.Form.RecordsetClone
     rs.MoveLast
     R = rs.RecordCount
     rs.MoveFirst
     For i = 1 To R
     If IsNull(rs!Qty) Then
     MsgBox " íæÌÏ ÇÕäÇÝ ÈÇáÝÇÊæÑÉ ÈÏæä ßãíÉ ... ÇÏÎá ÇáßãíÉ ÇæáÇ", vbCritical, " ÈÏæä ßãíÉ "
     Exit Sub
     End If
     rs.MoveNext
     Next
     rs.close
     Set rs = Nothing

وسامحني مرة اخري  وبارك الله فيك

 

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

نعم استاذي الفاضل انا اريد فقط التنبيه بوجود الصنف 

وعليه تكون الصورة كالتالي:-

 عند الضغط على الصنف  هناك امرين :

1 - فى حالة عدم وجود الصنف بالسجلات يقوم بالاضافة العادية بغض النظر عن العدد ( 1 - 2 - 3..... الخ ) ... ( وهذا مطبق وموجود حاليا بالمرفق ) .

2- في حالة وجود الصنف بالسجلات يقوم فقط باعلامي او تنبيهي بوجود هذا الصنف ( من خلال رسالة تنبيهية بالاستمرار او الانتقال الى هذا الصنف المضاف مسبقا للتعديل عليه )

اتمني تكون الصورة واضحة ... وجزاك الله كل خير  استاذنا الجميل رمهااان . 

 

على قولة الاستاذ ابا خليل : هذه ماخطت اناملك !

ولي عودة معك ! مشغول الان !

تحياتي

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

أخي وائل :smile:

خلينا نعطي الاستاذ رمهان استراحة ، والله يخليك جرب المرفق :smile:

 

الكود التالي هو اللي يقوم بالعمل:

Sub mm(xx)
Dim rs As DAO.Recordset
Set rs = Me.F_ordersubform.Form.RecordsetClone
rs.FindFirst "itemcode='" & xx & "'"

    'check if this item is already on the list
    If rs.NoMatch = False Then
        Dim Msg, Style, Title, Help, Ctxt, Response, MyString
        Msg = "هذا الصنف موجود على قائمة الزبون ، هل انتقل الى الصنف الموجود" & vbCrLf & _
              "This Item already Exists on the list, should we go there" & vbCrLf & vbCrLf & vbCrLf & _
              "Yes = انتقل الى الصنف" & vbCrLf & _
              "No  = اضف الصنف مرة اخرى"
              
        Style = vbYesNoCancel + vbCritical + vbDefaultButton3    ' Define buttons.
        Title = "الصنف مكرر ، ماذا تريد ان تعمل"    ' Define title.
        Response = MsgBox(Msg, Style, Title)
        If Response = vbYes Then    ' User chose Yes.
            
            Me.F_ordersubform.Form.Bookmark = rs.Bookmark
            'Me.F_ordersubform!Qty.SetFocus
            Exit Sub
            
        End If
    End If  'NoMatch
    

 

جعفر

222.1.KFC.mdb.zip

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

مشكور اخوي جعفر واتوقع ان الاخ وائل عايز الشغل على زر الحفظ وهنا انا حسولف معاه شويه :

اخ وائل : في نص المشاركة الاصلية طلبك في زر الحفظ ولكن مع النقاش تحول الى الضغط على الازرار وكما اشرت لك سابقا ! وعالعموم خلينا في الزبدة :

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

هنا ياترى ماهو التنبيه الذي سيظهر عند النقر على زر حفظ ؟ تريده يقول لك هناك 3 سجلات ؟ واين يذهب : هل يذهب لاخرهم ام اولهم ام ماذا ؟

تحياتي

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

استاذ جعفر ... مبدع دائما كالعادة وبارك الله فيك وزادك الله من علمة

استاذ رمهان  ... انت صح 100%   اعتذر  عن الخطأ  حيث انني لم اراجع الفكرة جيدا

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

لكن كما تفضلت انت والاستاذ جعفر .... ان المكان الصحيح هو زر الصنف نفسة  ولا تصلح عند زر الحفظ

ولكن المشكلة هو ظهور رسالة التكرار  عند زيادة الكمية  وهذا ما لا اريدة

والذي اريدة هو ظهور الرسالة عند اضافة  الصنف نفسة  مرة اخري  

مرة اخري سامحني على الاطالة  وبارك الله فيك وزادك الله من علمة

ولا تنسي ان هذه الطريقة توصلت اليها بفضل الله ثم  توجيهك وجهدك

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

ولا تنسي ان هذه الطريقة توصلت اليها بفضل الله ثم  توجيهك وجهدك

بالعكس اخي وائل انا لي تحفظ على الاكواد ! ولكن حاولت ان اعدل وبالحفاظ على السيناريو تبعك حيث انك لاتريد التغيير كثيرا على السيناريو الحالي ! وهذا ما يزيد الامر صعوبة ايجاد الاجابة المناسبة بدون التغير على الاكواد والتصميم !

الآن هل تمت الاجابة وحسب تعديل الاستاذ جعفر ؟

بالتوفيق

 

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

للاسف استاذ رمهان.... لم يتم التوصل الي ما اريده كما اسلفت

 وهو ظهور رسالة التكرار عند الضغط علي الصنف لزيادة الكمية  وهذا ما لا اريدة

والذي اريدة هو ظهور الرسالة فقط عند اضافة  الصنف نفسة  مرة اخري

على سبيل المثال :

عند الضغط على الصنف زبيدي 1-2-3-...... الخ  ثم الانتقال الي صنف اخر

وعند الضغط مرة اخري على الصنف زبيدي...... ( هنا تظهر رسالة التنــبيه بالتكرار )

وبارك الله فيك ما تقصر ، ومشكور على المتابعة

 

 

 

New.rar

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

السلام عليكم

للاسف استاذ رمهان.... لم يتم التوصل الي ما اريده كما اسلفت

1. وهو ظهور رسالة التكرار عند الضغط علي الصنف لزيادة الكمية  وهذا ما لا اريدة

2. والذي اريدة هو ظهور الرسالة فقط عند اضافة  الصنف نفسة  مرة اخري

على سبيل المثال :

عند الضغط على الصنف زبيدي 1-2-3-...... الخ  ثم الانتقال الي صنف اخر

وعند الضغط مرة اخري على الصنف زبيدي...... ( هنا تظهر رسالة التنــبيه بالتكرار )

وبارك الله فيك ما تقصر ، ومشكور على المتابعة

.

1. والكود لا يفعل هذا الشئ ، مثل طلبك ، فالكود لا يعمل على ازرار + و - ،

2. وهذا الذي يفعله البرنامج بالضبط ، مثل طلبك ، فالكود يعمل على ازرار الاصناف فقط.

 

وين الخطأ اذا؟

 

جعفر

 

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

استاذي الغالي جعفر بارك الله في عمرك

من الواضح انني لم استطع توصيل المطلوب كما يجب

لو تسمحلي ناخذ مثال . ادخال فاتورة جديدة  اي ان السجلات فاغة   كويس

اريد ان ادخل من الصنف زبيدي  العدد  5  ماذا افعل ?

اقوم بالضغط على زر الصنف زبيدي  ( 5 ضغطات)  كويس  .. كدا لدينا في الفاتورة  الصتف زبيدي عدد 5

ثم تركت زر الصنف زبيدي وانتقلت الي زر صنف اخر  وادخلت العدد بنفس الطريقة السابقة . كويس 

كدا لدينا في الفاتورة الصنف زبيدي عدد 5  وايضا الصنف الاخر  بالعدد اياكان  كويس

ثم رجعت بالضغط مرة اخري علي زر الصنف زبيدي .......هناااااا تظهر رسالة التكرار 

ولكن في السابق كانت الرساله تظهر بعد الضغطة الاولي علي زر الصنف .

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

اتمني ان تكون الصورة اتضحت....  وجزاء الله كل خير

 

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

مرحبا اخ وائل

جربت البرنامج الاخير new    ومش شايف اي مشكلة : انتبه هل تعلم ان هناك فرق عندما تحدد سجل مدخل سابقا ثم الضغط على الصنف وهناك عندما تختار سجلا جديدا فارغا ثم تختارالصنف !!

ثم رجعت بالضغط مرة اخري علي زر الصنف زبيدي .......هناااااا تظهر رسالة التكرار 

وهنا طيب تريد ماذا ؟ لاتخرج الرسالة اذا حصل اختيار صنف جديد بعد اختيار الصنف الاول ؟:wub:

 

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

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



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

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

Important Information