هذا الكود يقوم بالبحث عن سجل عن طريق مقارنة حقلين ، ويتم استخدامه بعد إضافة حقلي نص الأول اسمه في الكود text1 والثاني text2 ، وزر أمر اسمه ( بحث ) ، ويوضع الكود في حدث النقر في زر الأمر ، ويقوم بالبحث في حقلي الرقم والتاريخ في السجلات فإذا وجد سجل مطابق قام بعرضه ، وإذا لم يجده عرض عليك البحث عن طريق حقل ثالث وهو الاسم .
والكود كالتالي :-
Private Sub بحث_Click()
Dim sWs As String, sMs As String, msg As String
Dim awa1, awa2
If Me.text1 = "" And Me.text2 = "" Then Exit Sub
If Me.text1 = "" Then
MsgBox "أكتب رقم المعاملة"
Me.text1.SetFocus
Exit Sub
ElseIf Me.text2 = "" Then
MsgBox "أكتب تاريخ المعاملة"
Me.text2.SetFocus
Exit Sub
End If
sMs = Me.text2
sWs = "الرقم = '" & Me!text1 & "'"
Me.RecordsetClone.MoveFirst
Me.RecordsetClone.FindFirst sWs
Do Until Me.RecordsetClone.NoMatch
If Me.RecordsetClone!التاريخ = sMs Then
Me.Bookmark = Me.RecordsetClone.Bookmark
Me.text1 = ""
Me.text2 = ""
Me.الاسم.SetFocus
Exit Sub
End If
Me.RecordsetClone.FindNext sWs
Loop
msg = "هذه المعاملة غير مسجلة" & Chr(13) & Chr(13) & "هل تريد البحث بالاسم"
awa1 = MsgBox(msg, 1048868)
Me.text1.SetFocus
If awa1 = 6 Then
Me.text1 = ""
Me.text2 = ""
awa2 = InputBox("أدخل الاسم")
If awa2 = "" Then Exit Sub
awa2 = "الاسم = '" & awa2 & "'"
Me.RecordsetClone.MoveFirst
Me.RecordsetClone.FindFirst awa2
Do Until Me.RecordsetClone.NoMatch
Me.Bookmark = Me.RecordsetClone.Bookmark
Me.text1 = ""
Me.text2 = ""
Me.الاسم.SetFocus
Exit Sub
Me.RecordsetClone.FindNext awa2
Loop
MsgBox ("لم يتم العثور على الاسم")
End If
End Sub
طبعاً الاسماء في الكود يجب أن تطابق الاسماء في النموذج سواء مربعات النص أو حقول أو زر الأمر ويمكنك تغيرها في الكود بما يوافق النموذج لديك .
وفي الاخير أعترف أنه لايوجد شيء من الابداع في هذا الكود فهو مجرد تغيير وإضافة في الكود الذي سبق أن طرحته في موضوع ( كود يمنع تسجيل سجل مرتين بمقارنة حقلين )، ولكن مع ذلك فهو حل لمشكلة عجزت أن أجد لها حلاً من خلال المواضيع المطروحة في هذا المنتدى . وهي البحث عن سجل عبر حقلين بغير طريقة الفلتره .
وبالتوفيق للجميع .
