الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

*فورم* تطوير عملية البحث بالدالة AddToWhere

مغلق
بدأه moody1616 في 25 ديسمبر 2002 · 6 رد · 6,880 مشاهدة · في قسم الأرشيف و المواضيع المميزه
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

اول شي لقد قمت بتطوير هذه الدالة لتخدم جميع الناس وإن شاء الله تفيد الجميع

اولا : هذه الدالة تعمل مع النموذج الذي لا يكون له مصدر بيانان ( اي النموذج لا يكون مبني على جدول او استعلام )

ثانيا : يجب ان يتكون النموذج من

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 وسوف تلاحظ ان النموذج الفرعي تم تصفيته على حسب المعايير التي اعطيتها انت له في الحقول المعباه ،

وارجوا ان يكون الشرح واضح وكافي ، وعلى فكره ممكن تطوير الفكره باكثر من ذلك بس هذا الكود ينفع انك تضعه في اي نموذج عندك وتغيير بعض الاشياء الخفيفه وليس تغيير الكود الرئيسي ، واخيرا ارجوا الفائدة للجميع

#2

يعطيك الف عافيه

وجزاك الله خير

تقبل تحياتي

#3

نرجو ارفاق المثال نفسه تسهيلا علي الجميع

لارفاق ملف اضغطه ثم لنتقيه من زر browse أثناء الرد

#4

هذا هو الملف إن شاء الله يحوز على رضاكم وعلى فكره معمول على الاكسس 2000

find.zip

#5

أخي الكريم moody1616

تحية لك على هذا المثال الرائع لكن حبذا لو شرحت الكود نفسه بحث تشرح عمل كل سطر والرموز المستخدمة في الكود مثل LS ,S ,N وغيرها حتى يسهل استخدامه

على كل هذا مجرد اقتراح آمل أن يسمح وقتك الثمين به

أكرر تحياتي على هذا الجهد المعطاء ونحن في انتظار المزيد

#6

مثال جميل ولكن لماذا تبحث عن الصعب

يعنى عند الضغط على زر البحث لماذا يكرر المدخلات فى رسالة أليس من الأفضل التسهيل على المستخدم فى عملية البحث .

#7
اقتباس
مثال جميل ولكن لماذا تبحث عن الصعب  

يعنى عند الضغط على زر البحث لماذا يكرر المدخلات فى رسالة أليس من الأفضل التسهيل على المستخدم فى عملية البحث .

يمكن منع تكرار المدخلات في الرسالة وذلك عن طريق إيقاف أو إلغاء عمل السطر التالي:

MsgBox MyCriteria

والله الموفق .

ibnmusqat.gif

هذا الموضوع مغلق.

مواضيع مشابهة