السلام عليكم ورحمة الله تعالى وبركاته
استاذى الجليل ومعلمى القدير الاستاذ @kkhalifa1960
اسعد الله صباحكم
طيب ايه رايك اقول لحضرتك على فكرة بنت حلال وبسيطة قوى قوى وقمة فى السهولة
نمسح كل كل الاكواد وكل الوحدات النمطية من المرفق
وننشئ وحدة نمطية جديدة مثلا باسم : basFillFields
ونضع بها الدوال الاتية
Option Compare Database
Option Explicit
Const ListBoxFormName As String = "frm_Specifications"
Public Function OpenListBoxForm(FormName As Form)
DoCmd.OpenForm ListBoxFormName, , , , , acDialog, FormName.Name & ";" & FormName.ActiveControl.Name
End Function
Public Function UpdateFieldFromListBox(FormName As String, FieldName As String, SelectedValue As Variant)
Forms(FormName).Controls(FieldName).Value = SelectedValue
End Function
بس كده وفى كل النماذج فقط يكون الكود
Option Compare Database
Option Explicit
Private Sub CmdClose_Click()
DoCmd.Close
End Sub
اما بالنسبة لنموذج :frm_Specifications
سوف نستخدم الاكواد الاتية
Option Compare Database
Option Explicit
Dim Args() As String
Private Sub List0_DblClick(Cancel As Integer)
Args = Split(Me.OpenArgs, ";")
Call UpdateFieldFromListBox(Args(0), Args(1), Me.List0.Value)
DoCmd.Close acForm, Me.Name
End Sub
Private Sub List0_Click()
Args = Split(Me.OpenArgs, ";")
frm1 = Args(0)
Txt2 = Args(1)
Me.Txt1 = Me.List0.Column(0)
End Sub
Private Sub cmdOK_Click()
Call UpdateFieldFromListBox(Args(0), Args(1), Me.List0.Value)
DoCmd.Close acForm, Me.Name
End Sub
وطبعا انا استخدمت الاكواد السابقة للحفاظ على التصميم والية العمل وفقا للمرفق تماما
ولكن يمكن فقط استخدام هذا الجزء فقط والاستغناء عن باقى الاكواد الاخرى
Option Compare Database
Option Explicit
Dim Args() As String
Private Sub List0_DblClick(Cancel As Integer)
Args = Split(Me.OpenArgs, ";")
Call UpdateFieldFromListBox(Args(0), Args(1), Me.List0.Value)
DoCmd.Close acForm, Me.Name
End Sub
طيب الان نصل الى اهم واجمل جزء الاستدعاء
سوف اقوم باستخدام Expression Builder لاستدعاء الدالة بالشكل التالى
=OpenListBoxForm([Form])
واخيرا المرفق
DDTest602-3.accdb