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

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

قام بنشر

 السلام عليكم

احيانا نخطئ ونقوم بادخال الاسم اكثر من مرة 

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

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

اتمنى لكم الفائدة 

مرفق قاعدة بيانات صغيرة عليها مثال لمنع التكرار لكي تعم الفائدة وخاصة للاخوة المبتدئين 

 

شرح الطريقة :  نعمل نموذج يوجد به الاسم فقط ونجعله ورقة بيانات ونضع في تذييله =count(*)

ثم ندرج هذا النموذج داخل النموذج الرئيسي كنموذج فرعي حيث وظيفته يعد لي الاسماء كم مرة تكرر

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

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

لكي نمنع التكرار ونمنع الاضافة

التكرار ممنوع.accdb

قام بنشر

وعليكم السلام اخي عبداللطيف 🙂

 

شكرا لك على هذه البرامج التشجيعية 🙂

عندي مداخله لوسمحت لي 🙂

 

وبإستعمال طريقة Dcount ، ولكن بشكل يختلف:

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

Private Sub الاسم_BeforeUpdate(Cancel As Integer)
    
    If DCount("*", "العميل", "[الاسم]='" & Me.الاسم & "'") > 0 Then

        MsgBox "هذا الاسم موجود بالفعل", vbCritical, "التكرار ممنوع"
        Me.Undo
        Cancel = True

    End If
    
End Sub

.

ولكن ، بعض الاوقات لما المستخدم يلاقي ان الاسم تم ادخاله مسبقا ، فإنه يريد الذهاب الى ذلك الاسم للتأكد من عدم تشابه الاسماء (وهذا ما حصل مع بعض مستخدمي برامجي 🙂 ) ، لذلك ، اليك هذه الطريقة:

Private Sub الاسم_BeforeUpdate(Cancel As Integer)
    
    Dim ID As Integer
    Dim Msg, Style, Title, Response

    ID = Nz(DLookup("[المعرف]", "العميل", "[الاسم]='" & Me.الاسم & "'"), 0)

    If ID <> 0 Then
    
        Me.Undo
        Cancel = True
        
        
        Msg = "هذا الاسم موجود بالفعل" & vbCrLf & _
               "المعرف رقم " & ID & vbCrLf & vbCrLf & _
               "Yes : نعم اذهب الى ذلك السجل" & vbCrLf & _
               "No  : فقط الغي هذا السجل"
        Style = vbYesNo + vbCritical + vbDefaultButton2
        Title = "التكرار ممنوع"
                
        Response = MsgBox(Msg, Style, Title)
        If Response = vbYes Then
            
            DoCmd.FindRecord ID, , , , , acAll, True
        End If
 
                
    End If

End Sub

.

والنتيجة:

1006.Clipboard01.jpg.b6555644cb7f37d8ebe947946a2e0790.jpg

 

جعفر

 

1006.التكرار ممنوع.accdb.zip

  • Like 1
  • Thanks 1
قام بنشر
53 دقائق مضت, jjafferr said:

وعليكم السلام اخي عبداللطيف 🙂

 

شكرا لك على هذه البرامج التشجيعية 🙂

عندي مداخله لوسمحت لي 🙂

 

وبإستعمال طريقة Dcount ، ولكن بشكل يختلف:

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


Private Sub الاسم_BeforeUpdate(Cancel As Integer)
    
    If DCount("*", "العميل", "[الاسم]='" & Me.الاسم & "'") > 0 Then

        MsgBox "هذا الاسم موجود بالفعل", vbCritical, "التكرار ممنوع"
        Me.Undo
        Cancel = True

    End If
    
End Sub

.

ولكن ، بعض الاوقات لما المستخدم يلاقي ان الاسم تم ادخاله مسبقا ، فإنه يريد الذهاب الى ذلك الاسم للتأكد من عدم تشابه الاسماء (وهذا ما حصل مع بعض مستخدمي برامجي 🙂 ) ، لذلك ، اليك هذه الطريقة:


Private Sub الاسم_BeforeUpdate(Cancel As Integer)
    
    Dim ID As Integer
    Dim Msg, Style, Title, Response

    ID = Nz(DLookup("[المعرف]", "العميل", "[الاسم]='" & Me.الاسم & "'"), 0)

    If ID <> 0 Then
    
        Me.Undo
        Cancel = True
        
        
        Msg = "هذا الاسم موجود بالفعل" & vbCrLf & _
               "المعرف رقم " & ID & vbCrLf & vbCrLf & _
               "Yes : نعم اذهب الى ذلك السجل" & vbCrLf & _
               "No  : فقط الغي هذا السجل"
        Style = vbYesNo + vbCritical + vbDefaultButton2
        Title = "التكرار ممنوع"
                
        Response = MsgBox(Msg, Style, Title)
        If Response = vbYes Then
            
            DoCmd.FindRecord ID, , , , , acAll, True
        End If
 
                
    End If

End Sub

.

والنتيجة:

1006.Clipboard01.jpg.b6555644cb7f37d8ebe947946a2e0790.jpg

 

جعفر

 

1006.التكرار ممنوع.accdb.zip

احسنت اخي جعفر

ونفعنا الله من علمك

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.

×
×
  • اضف...

Important Information