Trang 1 trên 1

Mong mọi người xem giúp code

Đã gửi: T.Ba 14/03/2017 11:02 pm
gửi bởi vbthuctap
trong danhba.mdb có 2 bảng ( NgheNghiep và DanhBa)
lấy dữ liệu SQL từ 2 bảng NgheNghiep và DanhBa.

SELECT A.Num, A.Name, A.Age, B.TenNghe FROM DanhBa A, NgheNghiep B WHERE A.MaNghe = B.MaNghe

Nếu nhập tuổi ở ô 1, thì hiển thị tuổi của những người thỏa mã điều kiên
A.Age >= (tuổi vừa nhập ở ô 1)

Nếu nhập tuổi ở ô 2, thì hiển thị tuổi của những người thỏa mã điều kiên
A.Age <= (tuổi vừa nhập ở ô 2)

Nếu nhập tuổi ở ô 1 và 2 , thì hiển thị tuổi của những người thỏa mã điều kiên
A.Age >= (tuổi vừa nhập ở ô 1) AND A.Age <= (tuổi vừa nhập ở ô 2)

nếu lựa chọn nghề nghiệp ở combo, thì hiển mã nghề nghiệp của người thỏa mãn điều kiện
A.MaNghe = (mã nghề lựa chọn ở ô combo)

(Mình không hiểu tại sao ở đề bài bảo hiện thị mã nghề nghiệp, mà ở Grid thì lại bảo hiện thị TenNghe) như hình dưới.
Hình ảnh

dưới đây là code mình đã viết, mong mọi người xem giúp. Xin cám ơn.

Mã: Chọn hết

Dim gdb As Database
Dim grs As Recordset
Dim str As String
Dim s() As String
Dim i As Integer

Private Sub cmdend_Click()
    End
End Sub

Private Sub cmdsearch_Click()

    str = "select A.num,A.name,A.age,B.TenNghe"
    str = str + " from DanhBa A, NgheNghiep B"
    str = str + " where A.MaNghe = B.MaNghe"
   
    Set grs = gdb.OpenRecordset(str)
    grs.MoveLast
    grs.MoveFirst
   
    tb.Rows = grs.RecordCount + 1
    If txtage1.Text <> "" And txtage2.Text = "" Then
    For i = 1 To grs.RecordCount
       
        tb.Row = i
        tb.Col = 0
        tb.Text = grs!num
       
        tb.Col = 1
        tb.Text = grs!Name
       
        If grs!age >= CInt(txtage1.Text) Then
            tb.Col = 2
            tb.Text = CStr(grs!age)
        End If
       
        If Combo1.ListIndex > -1 And Combo1.Text = grs!TenNghe Then
            tb.Col = 3
            tb.Text = grs!TenNghe
        End If
       
        grs.MoveNext
    Next i
    ElseIf txtage2.Text <> "" And txtage1.Text = "" Then
        For i = 1 To grs.RecordCount
       
        tb.Row = i
        tb.Col = 0
        tb.Text = grs!num
       
        tb.Col = 1
        tb.Text = grs!Name
       
        If grs!age <= CInt(txtage2.Text) Then
            tb.Col = 2
            tb.Text = CStr(grs!age)
        End If
       
        If Combo1.ListIndex > -1 And Combo1.Text = grs!TenNghe Then
            tb.Col = 3
            tb.Text = grs!TenNghe
        End If
       
        grs.MoveNext
    Next i
    ElseIf txtage1.Text <> "" And txtage2.Text <> "" Then
        For i = 1 To grs.RecordCount
       
        tb.Row = i
        tb.Col = 0
        tb.Text = grs!num
       
        tb.Col = 1
        tb.Text = grs!Name
       
        If grs!age >= CInt(txtage1.Text) And grs!age <= CInt(txtage2.Text) Then
            tb.Col = 2
            tb.Text = CStr(grs!age)
        End If
       
        If Combo1.ListIndex > -1 And Combo1.Text = grs!TenNghe Then
            tb.Col = 3
            tb.Text = grs!TenNghe
        End If
       
        grs.MoveNext
    Next i
    Else
    For i = 1 To grs.RecordCount
       
        tb.Row = i
        tb.Col = 0
        tb.Text = grs!num
       
        tb.Col = 1
        tb.Text = grs!Name
       
        tb.Col = 2
        tb.Text = CStr(grs!age)
       
        tb.Col = 3
        tb.Text = grs!TenNghe
   
        grs.MoveNext
    Next i
    End If
End Sub

Private Sub Form_Load()
    Set gdb = OpenDatabase("c:\mdb\danhba.mdb")
    tb.Cols = 4
   
    tb.Row = 0
    tb.Col = 0
    tb.Text = "num"
   
    tb.Col = 1
    tb.Text = "name"
   
    tb.Col = 2
    tb.Text = "age"
   
    tb.Col = 3
    tb.Text = "TenNghe"
   
    tb.FixedCols = 0
    tb.SelectionMode = 1
   
    str = "select * from NgheNghiep"
    Set grs = gdb.OpenRecordset(str)
    grs.MoveLast
    grs.MoveFirst
    ReDim s(grs.RecordCount)
    For i = 0 To grs.RecordCount - 1
        Combo1.AddItem grs!TenNghe
        s(i) = grs!MaNghe
        grs.MoveNext
    Next i
End Sub