منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : بحث باستخدام 5 combobox
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

عندي فورم و 5 combobox

combo1 خاص بالأسماء؛ combo2 المهن : combo3 السنوات ؛ combo4 الأشهر ؛ combo5 الأيام ؛

البرنامج يقوم بالبحث داخل قاعدة البيانات حسب قيمة كل combobox وحيدة ( أي يبحث إما حسب الأسماء أو المهن أو السنوات أو الأشهر أو الأيام )

المشكل هو كيف أقوم بالبحث باستخدام أكتر من combo في نفس الوقت ( أي بستخدام من 2 إلى 5 combo في وقت واحد )

شكر مسبق للجميع
هذا كود لعمل 3 استعلامات في وقت واحد

لو امكن ترفق مثالك ليتم التعديل علية
PHP كود :
sgl "SELECT * FROM SERVES where [IDCAR]='" Trim(ID_CAR.Text) & "'" "
 or [DATMANTH] =" 
Val(DATA_MANTH.Text) & "OR [CAR_ID]='" Trim(NO_CAR.Text) & "'" 
قيمة الكومبو الثاني خذه و ضعه في شرط

يعني تحت امر البحث

تكتب مجموعة من الاوامر تسند فيها كل حقل الى متغير او تكست بوكس

و تضع امر شرطي اذا مثلا المتغير كذا = قيمة الكومبو 2

ارجو ان تكون قد فهمتني

و مثال :

كود :
Data1.Recordset.FindFirst "[word]='" & Trim$(Text1.Text) & "'"
If Not Data1.Recordset.NoMatch Then
Text15.Text = Data1.Recordset.Fields!word
Text16.Text = Data1.Recordset.Fields!mean
Text17.Text = Data1.Recordset.Fields!no
If Text1.Text = Text15.Text Then print "55555555555555555555555555555555"
End If
(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
السلام عليكم...

اكتب دالة لإنشاء عبارة 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 هو اسم حقل الاسم (رقمي - لا توجد علامات اقتباس فردية).

نرجو الاستفادة و السلام.
1000000000000000000 شكر
شكر علي المجهودات