الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

منع تكرار المفاتيح الرئيسية...

بدأه ALSAHER_9 في 20 نوفمبر 2008 · 3 رد · 624 مشاهدة · في قواعد بيانات Microsoft Access
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هل يمكن لاحد شرح هذا الكود لي؟

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

Private Sub documentno_BeforeUpdate(Cancel As Integer)
documentnofield = Me.documentno
Dim a
a = DLookup("[documentno]", "table1", "[documentno]='" & Me.documentno & "'")
If Not (IsNull(a)) Then
MsgBox "رقم مكرر", vbCritical, "رسالة خطأ"
Cancel = True
Me.Undo
DoCmd.FindRecord documentnofield
End If
End Sub

اريد تطبيقة في نموذج

اسم الجدول LInfo

المفتاح الرئيسي LNo

اسم مربع النص داخل النموذج LNobox

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

شكرا جزيلا

تم تعديل هذه المشاركة بواسطة ALSAHER_9 في 20 نوفمبر 2008 في 15:18

#3

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

اخي الفاضل : ليس من الضروري ان يكون هذا الحقل مفتاح اساسي لإستخدام هذا الكود لمنع التكرار

شرح الكود . طبعاً بعد التعديل

Dim a As Integer
	a = Nz(DLookup("[LNo]", "LInfo", "[LNo]=forms!frm1!LNobox "))
	If Not (IsNull(a)) Then
		MsgBox "رقم مكرر", vbCritical, "رسالة خطأ"
		Cancel = True
		Me.Undo
		DoCmd.FindRecord a
	End If

السطر الاول

تعريف متحول اسمه a ونوع بياناته رقم لأننا سنتعامل مع حقل رقمي وكان هناك خطأ بالكود السابق بمشاركتك بعدم تعيين نوع للمتحول وهذا يجعل الاكسس يعتبر هذا المتحول من نوع ( متغير ) وهذا النوع يعتبر اكبر من الانواع الاخرى مثل الرقم او النص .. وهذا سيؤثر على الاداء ويحجز مساحة اكبر من الذاكرة.

السطر الثاني :

اسناد قيمة للمتحول الرقمي a وهي عبارة عن ناتج الدالة DLookup وهذا الدالة لها ثلاثة وسائط

أ: الوسيط الاول هو اسم الحقل المراد البحث عنه وفي مثالنا هو LNo

ب: الوسيط الثاني وهو اسم الجدول وفي مثالنا هو LInfo

ج: الوسيط الثالث وهو المعيار وفي مثالنا نريد ان نبحث عن قيمة الحقل LNo المساوية للقيمة الموجودة على مربع النص LNobox وسيكون المعيار كالتالي

 [LNo]=forms!frm1!LNobox

وتم استخدام forms!frm1!LNobox ليتم العمل على اي نوع من البيانات الموجودة بمربع النص ... تاريخ ..نص .. رقم ...

السطر الثالث :

يتم اختبار قيمة المتحول a باستخدام الجملة الشرطية If فإذا كانت لا تساوي صفر .... وهذا يعني بأن هناك قيمة للحقل تساوي القيمة المدخلة في مربع النص

السطر الرابع :

اظهار رسالة تفيد بالتكرار

السطر الخامس :

الغاء الاجراء

السطر السادس :

يتم التراجع باستخدام المنهج Undo للنموذج

السطر السابع :

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

السطر الثامن :

انهاء الجملة الشرطية If

اخي الكريم : لا حظت ردك وانا على وشك الانتهاء من كتابة الشرح .. فقط ارفق هذا الشرح والمثال للفائدة

New.rar

#4

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

لك الأجر على الشرح الجميل والوافي

وافادك الله بما تعلمت وعلمت

تم تعديل هذه المشاركة بواسطة ALSAHER_9 في 20 نوفمبر 2008 في 20:13

مواضيع مشابهة