السلام عليكم أخي محمد
انا لن اتطرق لطريقة عمل النموذج الجديد ، "لأننا" لم نلحظ المشكلة في النموذج الاصل
ولكني دخلت في كود Combopn_AfterUpdate :
pn = DLookup("pn", "code", "[pn]=forms!frm_dataentry!Combopn")
size = DLookup("Size", "code", "[pn]=forms!frm_dataentry!Combopn")
vendor = DLookup("Vendor", "code", "[pn]=forms!frm_dataentry!Combopn")
Description = DLookup("Description", "code", "[pn]=forms!frm_dataentry!Combopn")
Maxrl = DLookup("Maxrl", "code", "[pn]=forms!frm_dataentry!Combopn")
Maxrlegyptair = DLookup("Maxrlegyptair", "code", "[pn]=forms!frm_dataentry!Combopn")
ACType = DLookup("actype", "code", "[pn]=forms!frm_dataentry!Combopn")
Pos = DLookup("pos", "code", "[pn]=forms!frm_dataentry!Combopn")
BiasRadial = DLookup("biasradial", "code", "[pn]=forms!frm_dataentry!Combopn")
code = DLookup("code", "code", "[pn]=forms!frm_dataentry!Combopn")
لاحظت انك تنادي الجدول (اي تعمل استعلام للجدول) 10 مرات !!
انا دائما لما اعمل برامجي ، اعمل البرنامج على اساس انه سيكون عبارة عن جزئين ، الواجهة FE ، والجداول BE ،
وان الجداول BE ، ستكون في شبكة ،
وان الواجهة FE ستكون لأكثر من مستخدم.
لهذا السبب ، فيجب ان نقلل الزحمة في الشبكة ، وذلك بتقليل زيارة/استعلام الجداول قدر الإمكان ، وعند كل زيارة ، يجب ان نأخذ اكبر كمية من البيانات المطلوبة ، ثم نتعامل معها محليا في FE.
لذلك ، فانا هنا اعطيك احد البدائل (والتي لا يعرفها الكثير ، لأنها تعمل على الاكسس 2003 فما فوق) ،
فالكود التالي ، يقوم بزيارة/استعلام الجدول عن طريق DLookup مرة واحدة ، ويأخذ 10 بيانات مرة واحدة ، فلذا يمكن ان يستبدل كودك اعلاه:
Dim x() As String
A = Nz(DLookup("[pn] & '|' & [Size] & '|' & [Vendor] & '|' & [Description] & '|' & [Maxrl] & '|' & [Maxrlegyptair] & '|' & [actype] & '|' & [pos] & '|' & [biasradial] & '|' & [code]", "code", "[pn]=forms!frm_dataentry!Combopn"),"|||||||||")
'ويمكن استعمال اي شيء بدل عن | فمثلا الفاصلة
'A حتى اذا لم هناك قيمة للمتغير Nz نستعمل الدالة
'عدد مرات وضع العلامة | في نهاية السطر ، يكون نفس عددها في المعادلة
'لهذا السبب نرى اننا وضعنا 9 منها في نهاية السطر
x = Split(A, "|")
' For i = LBound(x) To UBound(x)
' Debug.Print x(i)
' Next i
Me.pn = x(0)
Me.size = x(1)
Me.vendor = x(2)
Me.Description = x(3)
Me.Maxrl = x(4)
Me.Maxrlegyptair = x(5)
Me.ACType = x(6)
Me.Pos = x(7)
Me.BiasRadial = x(8)
Me.code = x(9)
جعفر