عندما يكون لديك قائمة منسدلة تأخذ البيانات من جدول وعدد أعمدة القائمة اثنين وألتزام بالقائمة نعم والعمود المنضم واحد والقائمة الظاهرة (العمود الثاني) حرفية والقيم التي يتم تخزينها (العمود الأول) رقمية وتريد أن تقبل القائمة مرة إدخال رقم ومرة إختيار من القائمة فما الحل خاصةإذا كنت لا ترغب في جعل إلتزام بالقائمة إلى لا حتى لايتم إدخال بيانات غير موجودة في القائمة ؟
الحل في حدث عند عدم الوجود في القائمة ضع الكود التالي مع تعديل الأسماء :
Response = acDataErrContinue
If IsNumeric(NewData) Then
If CLng(NewData) <= DMax("[حقل الترقيم التلقائي]", "اسم الجدول") Then
Me![اسم القائمة على النموذج] = DLookup("[حقل الترقيم التلقائي]", "اسم الجدول", "[حقل الترقيم التلقائي]= " & NewData)
DoCmd.GoToControl "الحقل التالي"
Else
MsgBox "هذا الرقم غير موجود في جدول (اسم الجدول) ." & vbCrLf _
& "اختر أحد البنود من القائمة .", vbMsgBoxRight + vbMsgBoxRtlReading + vbCritical
Me![اسم القائمة على النموذج].Dropdown
End If
Else
MsgBox "القيمة التي أدخلتها غير صالة للحقل ." & vbCrLf _
& "اختر أحد بنود القائمة .", vbMsgBoxRight + vbMsgBoxRtlReading + vbCritical
Me![اسم القائمة على النموذج].Dropdown
End If
هذا بافتراض أن لكل بند موجود في القائمة رقم فريد يعني أن الجدول الذي تأخذ القائمة البيانات منه يحتوي على حقل ترقيم تلقائي وأن بيانات القائمة غير متكررة في الجدول (الحقل الذي تأخذ القائمة البيانات منه لايقبل التكرار ) مثال لو كان لدينا جدول به حقل ترقيم تلقائي وحقل طلبات وفيه :
صنف 1 الترقيم التلقائي 1
صنف 2 الترقيم التلقائي 2
صنف 3 الترقيم التلقائي 3
صنف 1 الترقيم التلقائي 4
صنف 1 الترقيم التلقائي 5
والقائمة تأخذ البيانات من هذا الحقل والعمود المنضم هو حقل الترقيم التلقائي فإذا وضعت في القائمة رقم 1 فمعناه أنك اخترت الصنف رقم واحد وإذا وضعت 2 فمعناه أنك اخترت الصنف رقم 2 وهكذا ولكن إذا وضعت رقم 4 فمعناه أنك اخترت الصنف رقم واحد وهذا قد يسبب لك مشاكل فيما بعد والأصح هنا أنه إذا كان يوجد لديك جدول أصناف يعني اسم الصنف ورقمه أن تكون البيانات منه فهذا بلا شك أفضل .
أرجو أن أكون قد وضحت المثال ومن عنده سؤال أو استفسار فليسأل .
وللجميع تحياتي
