المشاركات : 65
المواضيع 25
الإنتساب : Nov 2012
السمعة :
0
الشكر: 2
تم شكره 2 مرات في 2 مشاركات
السلام عليكم
عندي فورم و 5 combobox
combo1 خاص بالأسماء؛ combo2 المهن : combo3 السنوات ؛ combo4 الأشهر ؛ combo5 الأيام ؛
البرنامج يقوم بالبحث داخل قاعدة البيانات حسب قيمة كل combobox وحيدة ( أي يبحث إما حسب الأسماء أو المهن أو السنوات أو الأشهر أو الأيام )
المشكل هو كيف أقوم بالبحث باستخدام أكتر من combo في نفس الوقت ( أي بستخدام من 2 إلى 5 combo في وقت واحد )
شكر مسبق للجميع
المشاركات : 3
المواضيع 0
الإنتساب : Oct 2013
السمعة :
0
الشكر: 0
تم شكره 0 مرات في 0 مشاركات
(General)
Dim CN As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim sql As String
Private Sub Form_Load()
If CN.State = adStateOpen Then CN.Close
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data source=" & App.Path & "\db.mdb" & ";"
rs.Open "Select DISTINCT Date_Prog_RT, PROG from CND ", CN, adOpenKeyset, adLockOptimistic
If Not (rs.EOF And rs.BOF) Then
Do Until rs.EOF
Combo1.AddItem rs.Fields("Date_Prog_RT") & Value & Value
Combo2.AddItem rs.Fields("PROG") & Value & Value
rs.MoveNext
Loop
End If
End Sub
Private Sub Command1_Click()
If rs.State = adStateOpen Then rs.Close
rs.Open "SELECT Joint_No, Joint_Size, Thk, Root, Cap, ISO, Line_Class from [CND] where [Date_Prog_RT] Like '" & Combo1 & "' AND [PROG] Like '" & Combo2 & "' ORDER BY ISO ASC, Joint_No ASC", CN, adOpenStatic, adLockReadOnly
Set DataReport8.DataSource = rs
DataReport8.Sections("Section2").Controls("label1").Caption = Combo1
DataReport8.Sections("Section2").Controls("label13").Caption = Date
DataReport8.Show
End Sub
المشاركات : 372
المواضيع 15
الإنتساب : Sep 2013
السمعة :
28
الشكر: 487
تم شكره 1677 مرات في 187 مشاركات
السلام عليكم...
اكتب دالة لإنشاء عبارة WHERE حسب حالات الـ ComboBoxes (اجعل البند الأول في كل ComboBox بنداً فارغاً حتى يتسنى للمستخدم استبعاد أي واحد من التصفية أو البحث):
الكود التالي يستبعد أي ComboBox نصه فارغ (Text = ""):
كود :
Private Function CreateWherePart() As String
Dim Result As String
Dim Temp As String
Result = ""
' الاسم
Temp = Trim$(Combo1.Text)
If Temp <> "" Then
Result = "WHERE (name_field = '" & Temp & "')"
End If
' المهنة
Temp = Trim$(Combo2.Text)
If Temp <> "" Then
If Result = "" Then
Result = "WHERE (job_field = '" & Temp & "')"
Else
Result = Result & " AND (job_field = '" & Temp & "')"
End If
' السنة
Temp = Trim$(Combo3.Text)
If IsNumeric(Temp) Then
If Result = "" Then
Result = "WHERE (year_field = " & Temp & ")"
Else
Result = Result & " AND (year_field = " & Temp & ")"
End If
' الشهر
Temp = Trim$(Combo4.Text)
If IsNumeric(Temp) Then
If Result = "" Then
Result = "WHERE (month_field = " & Temp & ")"
Else
Result = Result & " AND (month_field = " & Temp & ")"
End If
' اليوم
Temp = Trim$(Combo5.Text)
If IsNumeric(Temp) Then
If Result = "" Then
Result = "WHERE (day_field = " & Temp & ")"
Else
Result = Result & " AND (day_field = " & Temp & ")"
End If
CreateWherePart = Result
End Function
Private Sub Command1_Click()
Dim SqlStr As String
Dim WherePart As String
SqlStr = "SELECT * FROM table_name"
WherePart = CreateWherePart
If WherePart <> "" Then
SqlStr = SqlStr & " " & WherePart
End If
' ...
' بقية كود البحث
' ...
End Sub
* في الدالة CreateWherePart:
= name_field هو اسم حقل الاسم (نصي - لاحظ علامات الاقتباس الفردية).
= job_field هو اسم حقل المهنة (نصي - لاحظ علامات الاقتباس الفردية).
= year_field هو اسم حقل الاسم (رقمي - لا توجد علامات اقتباس فردية).
= month_field هو اسم حقل الاسم (رقمي - لا توجد علامات اقتباس فردية).
= day_field هو اسم حقل الاسم (رقمي - لا توجد علامات اقتباس فردية).
نرجو الاستفادة و السلام.
بِسْمِ اللهِ الرَّحْمَنِ الرَّحِيمِ ( وَ مَا تُقَدِّمُوا لِأَنفُسِكُم مِّنْ خَيْرٍ تَجِدُوهُ عِندَ اللهِ هُوَ خَيْراً وَ أَعْظَمَ أَجْراً ) صَدَقَ اللهُ الْعَظِيمُ