اول شي لقد قمت بتطوير هذه الدالة لتخدم جميع الناس وإن شاء الله تفيد الجميع
اولا : هذه الدالة تعمل مع النموذج الذي لا يكون له مصدر بيانان ( اي النموذج لا يكون مبني على جدول او استعلام )
ثانيا : يجب ان يتكون النموذج من
1 - حقول ( خمس حقول ، االاسم ، رقم_الهاتف ، الراتب ، متزوج ( خانة اختيار ) ، تاريخ_التعيين
2 - ونموذج فرعي ( يكون مصدر البيانات فيه جدول او استعلام باسم Employee )
ثالثا : يجب ان يكون لديك جدول Employee وفيه الحقول التاليه بالخصائص التالية :
الاسم ( من نوع نص او مذكر )
رقم_الهاتف ( من نوع نص )
الراتب ( من نوع رقم او عملة )
متزوج ( من نوع نعم او لا )
تاريخ_التعيين ( من نوع تاريخ )
رابعا : الصق هذه الدالة في النموذج وهي الدالة AddToWhere
Private Sub AddToWhere(FieldType As String, FieldValue As Variant, FieldName As String, MyCriteria As String, Argcount As Integer)
If FieldValue <> "" Then
If Argcount > 0 Then
MyCriteria = MyCriteria & " and "
End If
If FieldType = "LS" Then
MyCriteria = (MyCriteria & FieldName & " Like " & Chr(39) & Chr(42) & FieldValue & Chr(42) & Chr(39))
Argcount = Argcount + 1
ElseIf FieldType = "S" Then
MyCriteria = (MyCriteria & FieldName & " = " & Chr(39) & FieldValue & Chr(39))
Argcount = Argcount + 1
ElseIf FieldType = "D" Then
MyCriteria = (MyCriteria & FieldName & " = #" & Format(FieldValue, "mm/dd/yyyy") & "#")
Argcount = Argcount + 1
ElseIf FieldType = "N" Then
MyCriteria = (MyCriteria & FieldName & " = " & FieldValue)
Argcount = Argcount + 1
End If
End If
End Sub
خامسا: ضع زر امر ثم ضع حدث عند الضغط هذا الكود :
Dim ctl As Control
Dim MyCriteria As String
Dim Argcount As Integer
Argcount = 0
For Each ctl In Me.Controls
If (ctl.ControlType = acTextBox Or ctl.ControlType = acComboBox Or ctl.ControlType = acCheckBox) And ctl.Tag <> "" Then
AddToWhere ctl.Tag, ctl.Value, "[" & ctl.Name & "]", MyCriteria, Argcount
End If
Next ctl
If MyCriteria = "" Then
MyCriteria = "True"
End If
Me.MySubForm.Form.RecordSource = "select * from Employee where " & MyCriteria
سادسا: يجب ان يكون اسم النموذج الفرعي MySubForm
سابعا: يجب ان يكون مصدر البيانات للنموذج الفرعي (جدول او استعلام) ويكون اسمه Employee
ثامنا: يجب التركيز الان ، ضع خاصية Tag بالنسبه للحقول في النموذج كلا على حسب طريقة البحث فيه
الاسم : يجب ان تضع خاصية Tag لهذا الحقل حرفين LS لانك سوف تبحث عن جزء من الاسم في هذا الحقل
رقم الهاتف : يجب ان تضع خاصية Tag لهذا الحقل حرف S لانك سوف تبحث عن التلفون باكملة في هذا الحقل
الراتب : يجب ان تضع خاصية Tag لهذا الحقل حرفين N لانك سوف تبحث عن الراتب باكملة في هذا الحقل
متزوج : يجب ان تضع خاصية Tag لهذا الحقل حرفين N لانك سوف تبحث عن صح او خطا في هذا الحقل
تاريخ التعيين : يجب ان تضع خاصية Tag لهذا الحقل حرفين D لانك سوف تبحث عن التاريخ في هذا الحقل والشي الثاني هذا الحقل يجب ان يكون من نوع تاريخ في الجدول المراد البحث فيه ( Employee ).
قم الان بتعبة البيانات المراد البحث عنها في الجدول Employee الموجود في النموذج الفرعي MySubForm وسوف تلاحظ ان النموذج الفرعي تم تصفيته على حسب المعايير التي اعطيتها انت له في الحقول المعباه ،
وارجوا ان يكون الشرح واضح وكافي ، وعلى فكره ممكن تطوير الفكره باكثر من ذلك بس هذا الكود ينفع انك تضعه في اي نموذج عندك وتغيير بعض الاشياء الخفيفه وليس تغيير الكود الرئيسي ، واخيرا ارجوا الفائدة للجميع

