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

مساعدتكم في كود منع التكرار


Radwan0

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

    Dim identityNumber As String
    Dim rs As DAO.Recordset
    Dim db As DAO.Database
    Dim response As Integer

    ' Get the entered identity number
    identityNumber = Me.YourIdentityNumberField.Value

    ' Set the database and recordset to check for the identity number
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT * FROM YourTableName WHERE IdentityNumberField = '" & identityNumber & "'")

    ' If a record with the same identity number exists, prompt for confirmation
    If Not rs.EOF Then
        response = MsgBox("This identity number already exists in the system. Do you want to proceed?", vbQuestion + vbYesNo, "Duplicate Found")
        
        ' If the user chooses No, cancel the update and exit the form without saving
        If response = vbNo Then
            Cancel = True ' Cancel the update
            Me.Undo ' Undo the changes in the current record
            DoCmd.Close acForm, Me.Name, acSaveNo ' Close the form without saving
        End If
    End If

    rs.Close ' Close the recordset
    Set rs = Nothing ' Clear the recordset object from memory
    Set db = Nothing ' Clear the database object from memory
End Sub

السلام عليكم اخواني

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

حصلت عندي اشكاليتين .

الاولى : عند ادخال رقم هويه مشابه صحيح انه يظهر لي ان الرقم موجود وبالتالي احصل على رسالة هل اريد الاستمرار ام لا .. في حال ضغطت على لا النموذج يقفل والسجل لا يحفظ لكن المشكلة هي في الترقيم التلقائي .. لنفرض كان عندي الزبون الاخير رقمه 541 ... فعند القيام بانشاء زبون اخر لا يوجد في قاعدة البيانات فانه ياخذ الرقم 543 وليس 542 ( لانني قمت باغلاق السجل السابق) 

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

 

اطلت عليكم فعذرا منكم 

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

9 دقائق مضت, Radwan0 said:

الاولى : عند ادخال رقم هويه مشابه صحيح انه يظهر لي ان الرقم موجود وبالتالي احصل على رسالة هل اريد الاستمرار ام لا .. في حال ضغطت على لا النموذج يقفل والسجل لا يحفظ لكن المشكلة هي في الترقيم التلقائي .. لنفرض كان عندي الزبون الاخير رقمه 541 ... فعند القيام بانشاء زبون اخر لا يوجد في قاعدة البيانات فانه ياخذ الرقم 543 وليس 542 ( لانني قمت باغلاق السجل السابق)

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

=Nz(DMax("[حقل_الترقيم]","اسم_الجدول"))+1

 

بالنسبة لثانياُ ، ارفق ملف بسيط للتعديل عليه :smile2:

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

38 دقائق مضت, Radwan0 said:

Database1.accdbان امكن التطبيق هنا اخي العزيز @Foksh

هذه فكرتي ، وانت عدل كما يلزمك في مشروعك ,,

 

 

Database1 (1).accdb

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

9 دقائق مضت, Radwan0 said:

@Foksh لا ارى التعديل اخي الفاضل

الحقل ( Student_ID ) جعلته من نوع رقم ، وجعلت القيمة الإفتراضية له في النموذج :-

=Nz(DMax("[Student_id]","tblStudentDetails"))+1

* بمعنى آخر ؛ يقوم بالبحث عن آخر قيمة ثم يضيف لها 1 عند الحفظ , وهو الفرق بينه وبين الترقيم التلقائي .

 

وفي زر الحفظ جعلته يقوم بالبحث في الجدول عن القيمة التي في الحقل ( IDD ) وهو افتراضي يمثل رقم الهوية مثلاُ باستخدام الدالة ( DLookup ) ، وبالكود التالي :-

If Not IsNull(DLookup("[IDD]", "tblStudentDetails", "[IDD] = " & Me.IDD)) Then
    If MsgBox(" " _
        & vbCrLf & "، الرقم الوطني موجود مسبقاً " _
        & vbCrLf & "هل ترغب بالتعديل ؟" _
        , 590132, "") = 6 Then
        IDD.SetFocus
    End If
    Else
        Undo
        DoCmd.CancelEvent
End If

ففي حالة وجود الرقم مسجل مسبقاً يعطيك رسالة نعم أو لا ؛ واذا اخترت نعم يقوم بالذهاب الى الحقل IDD ( رقم الهوية ) للتعديل عليه ، وإذا لا فإنه لا يحفظ - ولك حرية تعديل الشروط حسب رغبتك .

 

مرفق الملف مضغوط

Database1 (1).zip

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

اخي @kkhalifa1960 بارك الله بك هذا فعلا ما اريده

هنالك مشكلة بسيطه ان شاء الله وهي عند عدم حفظ السجل والضغط على لا فأن الترقيم التلقائي يتغير

نفرض الان السجل رقمه 3 وعندما دخلت لاضيف طالب جديد وهذا الطالب يملك نفس رقم الهويه قمت بالغاء العمليه 

فعند الدخول مرة اخرى لاضافة طالب اخر فان الترقيم التلقائي يقفز الى 5 وليس 4 

 

كيف يمكن حلها

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

تفضل أخي @Radwan0 زودت حقل (StudentNo) به الترقيم الجديد جرب ووافني بالرد .

اذا كان هذ طلبك لا تنسى الضغط على أفضل اجابة .:fff:

ادخال الرقم المكرر بطريقة جديدة.accdb

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

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