Lập trình tìm kiếm đa khoá

Một phần của tài liệu đồ án công nghệ thông tin Xây dựng phần mềm quản lý xe vận tải cho công ty vận tải Trường Hưng (Trang 58)

‘Cập nhật danh mục cho Bảng Hành Trình

5.3 Lập trình tìm kiếm đa khoá

Đoạn code cho phép tìm kiếm đa khoá. Kết hợp nhiều điều kiện với nhau để đưa ra được kết quả tốt nhất. Đáp ứng được yêu cầu tìm kiếm dù thông tin tìm kiếm bị hạn chế. (Ví dụ, tìm kiếm theo nhãn hiệu, hoặc kết hợp nhãn hiệu với tải trọng..)

Với giao diện như sau

Code

Dim bien_TT As Integer Private Sub Check1_Click() Dim strSQL_1 As String

strSQL_1 = "select distinct NhanHieu from Xe" myrs_tho.Open strSQL_1, Conn Do Until myrs_tho.EOF cboNH.AddItem myrs_tho!NhanHieu myrs_tho.MoveNext Loop cboNH.Enabled = True bien_TT = 1 If Check1.Value = 0 Then cboNH.Text = ""

If bien_TT = 1 Then

bien_TT = Lay_GT_CheckBox End If

End If

myrs_tho.Close

Set myrs_tho = Nothing End Sub

Private Sub Check2_Click() Dim strSQL_1 As String

strSQL_1 = "select distinct NuocSX from Xe" myrs_tho.Open strSQL_1, Conn Do Until myrs_tho.EOF cboNSX.AddItem myrs_tho!NuocSX myrs_tho.MoveNext Loop cboNSX.Enabled = True bien_TT = 2 If Check2.Value = 0 Then cboNSX.Text = "" cboNSX.Enabled = False If bien_TT = 2 Then bien_TT = Lay_GT_CheckBox End If End If myrs_tho.Close

Set myrs_tho = Nothing End Sub

Private Sub Check3_Click() Dim strSQL_1 As String cboTT.Enabled = True bien_TT = 3

strSQL_1 = "select distinct TaiTrong from Xe" myrs_tho.Open strSQL_1, Conn Do Until myrs_tho.EOF cboTT.AddItem myrs_tho!TaiTrong myrs_tho.MoveNext Loop cboTT.Enabled = True bien_TT = 3 If Check3.Value = 0 Then cboTT.Text = "" cboTT.Enabled = False End If If bien_TT = 3 Then

bien_TT = Lay_GT_CheckBox End If

myrs_tho.Close

Set myrs_tho = Nothing End Sub

Private Sub Check4_Click() cboTT.Enabled = True bien_TT = 4

strsql = " select SoDK from Xe" myrs_tho.Open strsql, Conn Do Until myrs_tho.EOF cboSDK.AddItem myrs_tho!SoDK myrs_tho.MoveNext Loop If Check4.Value = 0 Then cboSDK.Text = "" cboSDK.Enabled = False If bien_TT = 4 Then bien_TT = Lay_GT_CheckBox End If End If myrs_tho.Close

Set myrs_tho = Nothing End Sub

Private Sub Check5_Click() dbcboTT.Enabled = True bien_TT = 5 If Check5.Value = 0 Then dbcboTT.Text = "" dbcboTT.Enabled = False If bien_TT = 5 Then bien_TT = Lay_GT_CheckBox End If End If End Sub

Private Sub cmdthoat_Click() Unload Me

FrmMenu.Show End Sub

Private Sub cmdTim_Click() frmMaXe.Visible = False Dim str_seek As String

If optMaXe.Value = True Then

str_seek = "select MaXe as 'Mã xe', NhanHieu as 'Nhãn hiệu', " & _

"NuocSX as 'Nước sản xuất' ,SoDK as 'Số đăng ký' ,TaiTrong as 'Tải trọng'," & _ "MaTTXe as 'Mã tình trạng xe' from Xe where MaXe='" & dbcboMaXe.Text & "'" ElseIf optTTXe.Value = True Then

str_seek = "select MaXe as 'Mã xe', NhanHieu as 'Nhãn hiệu', " & _

"NuocSX as 'Nước sản xuất' ,SoDK as 'Số đăng ký' ,TaiTrong as 'Tải trọng'," & _ "MaTTXe as 'Mã tình trạng xe' from Xe "

If bien_TT = 1 Then

str_seek = str_seek & " where NhanHieu='" & cboNH.Text & "'" ElseIf bien_TT = 2 Then

str_seek = str_seek & " where NuocSX='" & cboNSX.Text & "'" ElseIf bien_TT = 3 Then

str_seek = str_seek & " where TaiTrong=" & Val(cboTT.Text) ElseIf bien_TT = 4 Then

str_seek = str_seek & " where SoDK='" & cboSDK.Text & "'" ElseIf bien_TT = 5 Then

str_seek = str_seek & " where MaTTXe='" & dbcboTT.BoundText & "'" Else

MsgBox "Bạn chưa chọn tiêu thức tìm kiếm" Exit Sub

End If

If Check1.Value = 1 Then If cboNH.Text <> "" Then If bien_TT <> 1 Then

str_seek = str_seek & " " & " and NhanHieu='" & cboNH.Text & "'" End If

Else

MsgBox " Bạn chưa nhập nhãn hiệu xe để tìm" dbcboHD.SetFocus

Exit Sub End If End If

'Lệnh If thứ 2: kiểm tra giá trị tên If Check2.Value = 1 Then

If bien_TT <> 2 Then

str_seek = str_seek & " and NuocSX='" & cboNSX.Text & "'" End If

Else

MsgBox " Bạn chưa nhập tên nước sản xuất để tìm" dbcboTen.SetFocus

Exit Sub End If End If

'Lệnh If thứ 3: kiểm tra giá trị năm sinh If Check3.Value = 1 Then

If cboTT.Text <> "" Then If bien_TT <> 3 Then

'Lệnh if 1_1: kiểm tra flag để xác định SQL là Where hay And str_seek = str_seek & " and TaiTrong=" & Val(cboTT.Text) End If

Else

MsgBox " Bạn chưa nhập số đăng ký để tìm" dbcboNS.SetFocus

Exit Sub End If End If

'Lệnh If thứ 4: kiểm tra giá trị loại hình nhân viên If Check4.Value = 1 Then

If cboSDK.Text <> "" Then If bien_TT <> 4 Then

'Lệnh if 1_1: kiểm tra flag để xác định SQL là Where hay And str_seek = str_seek & " and SoDK='" & dbcboSDK.BoundText & "'" End If

Else

MsgBox " Bạn chưa nhập tải trọng để tìm" dbcboLH.SetFocus

Exit Sub End If End If

'Lệnh If thứ 5: kiểm tra giá trị trạng thái lái xe If Check5.Value = 1 Then

If dbcboTT.Text <> "" Then If bien_TT <> 5 Then

'Lệnh if 1_1: kiểm tra flag để xác định SQL là Where hay And

Else

MsgBox " Bạn chưa nhập giá trị trạng thái xe để tìm" dbcboTT.SetFocus

Exit Sub End If End If Else

MsgBox " Bạn chưa chọn tiêu thức tìm kiếm" Exit Sub

End If

'bat dau lenh tim

'MsgBox " sql la: " & str_seek Dim strSQL_moi As String

strSQL_moi = " Provider=Microsoft.Jet.OLEDB.4.0;" & _

" Data Source= " & App.Path & "\Database\QLXeTai.mdb;" & _ " Persist Security Info=False"

Adodc1.ConnectionString = strSQL_moi Adodc1.CommandType = adCmdUnknown Adodc1.RecordSource = str_seek Adodc1.Refresh If Adodc1.Recordset.RecordCount > 0 Then 'frmKQ.Visible = True DataGrid1.Visible = True frmTTXe.Visible = False frmMaXe.Visible = False

'frmKQ.Caption = "Tìm thấy " & Adodc1.Recordset.RecordCount & " bản ghi" DataGrid1.Caption = " Tìm thấy " & Adodc1.Recordset.RecordCount & " bản ghi" Else

frmTTXe.Visible = False

lblKQ.Caption = "Không tìm thấy bản ghi thoả mãn" lblKQ.Visible = True

End If

optMaXe.Value = False optTTXe.Value = False End Sub

Private Sub cmdTimTiep_Click() frmTTXe.Visible = False

frmMaXe.Visible = False

lblKQ.Caption = " Chọn tiêu thức và giá trị tìm kiếm" lblKQ.Visible = True

DataGrid1.Visible = False End Sub

frmMaXe.Visible = True frmTTXe.Visible = False lblKQ.Visible = False End Sub

Private Sub optTTLX_Click() frmTTXe.Visible = True frmMaXe.Visible = False frmTTXe.Enabled = True lblKQ.Visible = False End Sub

Private Function Lay_GT_CheckBox() As Byte Dim KQ As Byte If Check1.Value = 1 Then KQ = 1 End If If Check2.Value = 1 Then KQ = 2 End If If Check3.Value = 1 Then KQ = 3 End If If Check4.Value = 4 Then KQ = 4 End If If Check5.Value = 1 Then KQ = 5 End If Lay_GT_CheckBox = KQ End Function

Private Sub Form_Load() lblKQ.Visible = True

Data1.DatabaseName = App.Path & "\Database\QLXeTai.mdb" Data2.DatabaseName = App.Path & "\Database\QLXeTai.mdb" End Sub

Private Sub optMaXe_Click() frmMaXe.Visible = True frmTTXe.Visible = False lblKQ.Visible = False End Sub

Private Sub optTTXe_Click() frmTTXe.Visible = True frmMaXe.Visible = False lblKQ.Visible = False

End Sub

Một phần của tài liệu đồ án công nghệ thông tin Xây dựng phần mềm quản lý xe vận tải cho công ty vận tải Trường Hưng (Trang 58)

Tải bản đầy đủ (DOC)

(101 trang)
w