إلى الاخوة الأعزاء في هذا المنتدى السلام عليكم ورحمة الله وبركاته وبعد
أولا اعتذر إن كان أحد سبقني للتطرق لهذا الموضوع وفي هذه الحالة و اعتبرو الموضوع من باب الذكرى وإذا كان جديد حسب ما عرفت من كتابة الأخ غريب فهذا هو الحل و أتمنى أن تعم الفائدة لجميع الاخوة ( لست من صمم الكود ولكن وجدته في قاعدة بيانات قديمة للحلول ) .
الفكرة هي كيف يتم البحث في اكثر من حقل الخطوات هي :
1. إنشاء نموذج البحث وحدد فيه الحقول التي سيتم البحث فيها مثلا الاسم والعمر والمهنة وذلك بإنشاء أي عدد من الحقول التي تريد أن تبحث فيها ( العدد يعتمد عليك ) احفظ أسماء هذه الحقول لأنك ستضعها في الإجراء search وستلاحظ أن كلما زدت في تحديد القيم في الحقول كلما قلت النتائج .
2. إنشاء Models وضع فيه هذين الإجراءين
Public Sub AddToWhere(FieldValue As Variant, FieldName As String, MyCriteria As String, ArgCount As Integer) If FieldValue <> "" Then If ArgCount > 0 Then MyCriteria = MyCriteria & "and" End If MyCriteria = (MyCriteria & FieldName & " like " & Chr(39) & FieldValue & Chr(42) & Chr(39)) ArgCount = ArgCount + 1 End If End Sub Public Function search() Dim MySQL As String Dim MyCriteria As String, MyRecordSource As String Dim ArgCount As Integer ArgCount = 0 MySQL = "select * from unit WHERE " MyCriteria = "" بالاسفل هي الحقول التي ستقوم بالبحث فيها . AddToWhere Forms![search]![first_name], "[unit]![f_name] ", MyCriteria, ArgCount AddToWhere Forms![search]![second_name], "[unit]![s_name] ", MyCriteria, ArgCount AddToWhere Forms![search]![third_name], "[unit]![t_name] ", MyCriteria, ArgCount AddToWhere Forms![search]![fam_name1], "[unit]![fam_name] ", MyCriteria, ArgCount AddToWhere Forms![search]![age1], "[unit]![age] ", MyCriteria, ArgCount MyRecordSource = MySQL & MyCriteria Forms![search]![form1].Form.RecordSource = MyRecordSource End Function
. إنشاء نموذج جديد وسمه form1 واجعل مصدر السجل تساوي العبارة التالية
SELECT * FROM unit WHERE false;
( ; هي بالصحيح مقلوبه آمل مراعاة ذلك )
اجعل طريقة العرض الافتراضية (صفحة بيانات ) Datasheet
قم بإنزال جميع عناصر هذا النموذج داخله بدون ترتيب فهو غير مهم .
3. نموذج search أوجد زر حدث واجعله ينادي الإجراء search
طبعا ليس هذا كل شئ فهناك نقاط كثيره لتطويره وذلك من خلال المشاكل التي واجهتني ومنها .
أ. يجب أن تتأكد من أن العناصر لا تساوي Null أي أنها غير فارغة .
ب. يجب أن تقوم بإيجاد زر حدث لمسح الحقول وتفريغها .
ت. يجب أن تكتب في حدث الخروج أوامر مسح جميع الحقول .
آمل أن يكون فيما قدمته فائدة لكم وآسف عن أي تقصير واكرر اعتذاري أن كان أحد سبقني لهذا الموضوع فأنا شخصيا لم أشهاد أي عضو تطرق لهذا الكود من قبل ولا احب ان انسب تعب غيري لنفسي .
أخوكم العطار
