国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
在VB+Access系統(tǒng)中實(shí)現(xiàn)多項(xiàng)條件查詢
在VB+Access系統(tǒng)中實(shí)現(xiàn)多項(xiàng)條件查詢 (上)
 

  本文以“人事檔案”數(shù)據(jù)庫(kù)為例,介紹在VBAccess系統(tǒng)中實(shí)現(xiàn)單項(xiàng)條件查詢與多項(xiàng)條件查詢的程序設(shè)計(jì)方法。

關(guān)鍵詞 數(shù)據(jù)庫(kù)  查詢  VB  Access  事件代碼

一、前言

對(duì)數(shù)據(jù)庫(kù)信息進(jìn)行查詢檢索是數(shù)據(jù)庫(kù)管理軟件的主要功能之一,也是其難點(diǎn)之一。本文以“人事檔案”數(shù)據(jù)庫(kù)為例,在Visual Basic 6.0+Sp3Microsoft Access2000環(huán)境下,介紹在VBAccess系統(tǒng)中實(shí)現(xiàn)單項(xiàng)條件查詢與多項(xiàng)條件查詢的程序設(shè)計(jì)方法。

 

二、字段及公共變量

假設(shè)“人事檔案”數(shù)據(jù)庫(kù)Archives.mdb已經(jīng)生成(位于當(dāng)前路徑下),庫(kù)中有 “人事檔案”表,表中有12條記錄。為簡(jiǎn)化說明,假設(shè)表中僅有如下幾個(gè)字段: [姓名]TEXT(4),[性別]TEXT(1),[籍貫]TEXT(8),[出生年月]DATE,[政治面貌]TEXT(8)[文化程度]TEXT(8)。

其中“性別、政治面貌、文化程度”三個(gè)字段的值只能從列表中選擇,以下簡(jiǎn)稱“下拉列表字段”,“性別”的列表值有“男、女”兩項(xiàng);“政治面貌”的列表值有“中共黨員、共青團(tuán)員、民主黨員、群眾”四項(xiàng);“文化程度”的列表值有“本科以上、大學(xué)本科、大學(xué)??啤?埔韵?#8221;四項(xiàng)。

另外,在模塊(Modbas)中定義公共變量如下:

Public QueryStr As String            '查詢條件串

Public ConditionNo As Integer        '條件數(shù)

Public CombOrText As Boolean       '選擇了Combo項(xiàng)還是Text項(xiàng)(即是否選擇了下拉列表字段)

Public Combo(3) As String           '下拉列表字段數(shù)組,若增加下拉列表字段數(shù),則增加此數(shù)組維數(shù)

三、查詢主窗體

本查詢程序示例包含三個(gè)窗體:查詢主窗體(FrmQuery)、單項(xiàng)條件查詢窗體(FrmSingle)、多項(xiàng)條件查詢窗體(FrmMany)。其中查詢主窗體(圖一)上有如下幾類控件:

 

 

 

 

 

 

 

 

 

 

 

 

 

1、三個(gè)文本框Text1(1)、Text1(2)、Text1(3)分別顯示姓名、籍貫、出生年月等字段的值;

2、三個(gè)下拉列表框Combo1(1)Combo1(2)、Combo1(3) 分別顯示性別、政治面貌、文化程度等字段的值;

3、RichTextBox1控件用于顯示個(gè)人簡(jiǎn)歷;

4、Data1控件的數(shù)據(jù)庫(kù)連接方式(Connect)采用VB系統(tǒng)默認(rèn)的Access 2000(視Microsoft Office版本而定)??煞謩e在Data1控件的DatabaseName、RecordSource屬性中設(shè)置Data1所關(guān)聯(lián)的數(shù)據(jù)庫(kù)文件名及數(shù)據(jù)表名,亦可在主窗體的Form_Load中加入如下代碼:

Private Sub Form_Load()

    Dim FileName As String

    If Right(App.Path, 1) = "\" Then               ' App.Path 為根目錄

      FileName = App.Path + "Archives.mdb"

    Else

      FileName = App.Path + "\Archives.mdb"

    End If

    Set File_db = OpenDatabase(FileName)         '打開人事檔案數(shù)據(jù)庫(kù)

    Data1.DatabaseName = FileName

    Data1.RecordSource = "人事檔案"             '關(guān)聯(lián)人事檔案表

    Data1.Refresh

End Sub

5、MSFlexGrid1控件的數(shù)據(jù)源(DataSource)為Data1,列數(shù)由數(shù)據(jù)源中“人事檔案”表的字段數(shù)而定(照片字段不予考慮),本例為6列,固定1行用于顯示字段名。

6、幾個(gè)重要的命令鍵Command1(單項(xiàng)查詢)、Command2(多項(xiàng)查詢)、Command3(清除條件)。

四、單項(xiàng)條件查詢

1、單項(xiàng)條件查詢窗體


在查詢主窗體中點(diǎn)擊“單項(xiàng)查詢”將彈出單項(xiàng)條件查詢窗體(圖二)。

窗體上有Combo1Combo2、Combo3三個(gè)下拉列表框及一個(gè)Text1文本框。其中,查詢項(xiàng)目下拉列表(Combo1)為查詢主窗體上Data1所關(guān)聯(lián)的數(shù)據(jù)庫(kù)的字段;條件關(guān)系下拉列表(Combo2)為數(shù)學(xué)關(guān)系符“=、<>、<、≤、>、≥、Like(包含)、Not Like(不包含)”;查詢信息為下拉列表選項(xiàng)(Combo3)或輸入值(Text1)。

當(dāng)查詢項(xiàng)目為“性別、政治面貌、文化程度”等列表字段時(shí),隱藏Text1控件,顯示Combo3控件,此時(shí)查詢者可在Combo3中選擇要查詢的信息項(xiàng);當(dāng)查詢項(xiàng)目選擇“姓名、籍貫、出生年月”等非列表字段時(shí),隱藏Combo3控件,顯示Text1控件,此時(shí)查詢者可在Text1中輸入要查詢的信息值。

2、單項(xiàng)條件查詢代碼

⑴、單項(xiàng)條件查詢窗體的Form_Load代碼,主要用于向Combo1中添加要查詢的字段。

Private Sub Form_Load()

    QueryStr = ""

    For i = 0 To FrmQuery.Data1.Recordset.Fields.Count – 1      '字段數(shù)

        Combo1.AddItem FrmQuery.Data1.Recordset.Fields(i).Name

    Next

End Sub

    ⑵、點(diǎn)擊Combo1,選擇一個(gè)要查詢的字段后,判斷是否選擇了“性別、政治面貌、文化程度”等下拉列表字段,并據(jù)此控制Combo3Text1的顯示與隱藏及Combo3的列表值。Combo1的點(diǎn)擊事件代碼如下:

Private Sub Combo1_Click()

On Error GoTo ErrDo

CombOrText = True

Select Case Combo1  '下拉列表字段

     Case "性別"

          i = 1

     Case "政治面貌"

          i = 2

     Case "文化程度"

          i = 3

     Case Else

         CombOrText = False

End Select

If CombOrText Then  '若選擇了Combo項(xiàng)則顯示Combo3,隱藏Text1

  Combo3.Visible = True

  Text1.Visible = False

  Combo3.Clear

  For j = 0 To FrmQuery.Combo1(i).ListCount - 1

  '將上級(jí)窗體相應(yīng)的Combo下拉列表加入到Combo3

Combo3.AddItem FrmQuery.Combo1(i).List(j)

  Next

Else   '否則顯示Text1,隱藏Combo3

  Combo3.Visible = False

  Text1.Visible = True

End If

Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "單項(xiàng)條件查詢"

    Resume Next

End Sub

⑶、點(diǎn)擊“查詢”命令鍵后,判斷是否在Combo1下拉列表中選擇了日期型字段(如出生年月),若選擇了日期型字段,則必須在查詢信息兩端加#號(hào);另外,還要判斷是否在Combo2下拉列表中選擇了數(shù)學(xué)關(guān)系符Like(即包含),若選擇了Like,則必須在查詢信息兩端加*號(hào)。“查詢”命令鍵的點(diǎn)擊事件代碼如下:

Private Sub Command1_Click()        '查詢

    On Error GoTo ErrDo

    Dim FindStr As String        '需查找的信息串

    QueryStr = ""

    If Combo1 = "" Then

       MsgBox "請(qǐng)選擇查詢項(xiàng)目!", vbCritical, "單項(xiàng)條件查詢"

       Exit Sub

    End If

    If Combo2 = "" Then

       MsgBox "請(qǐng)選擇查詢條件!", vbCritical, "單項(xiàng)條件查詢"

       Exit Sub

    End If

    If CombOrText Then         '選擇了Combo項(xiàng),即下拉列表字段

       If Combo3 = "" Then

          MsgBox "請(qǐng)選擇查詢信息!", vbCritical, "單項(xiàng)條件查詢"

          Exit Sub

       End If

       FindStr = Trim(Combo3)

    Else   '選擇了Text項(xiàng),即非下拉列表字段

       If Trim(Text1) = "" Then

          MsgBox "請(qǐng)輸入查詢信息!", vbCritical, "單項(xiàng)條件查詢"

          Exit Sub

       End If

       FindStr = Trim(Text1)

    End If

    Select Case Trim(Left(Combo2, 4))

    Case "Like"  '數(shù)學(xué)關(guān)系符為"Like",即包含

    QueryStr = Combo1 & " " & Trim(Left(Combo2, 4)) & " '*" & FindStr & "*'"

    Case "Not"   '數(shù)學(xué)關(guān)系符為"Not Like",即不包含

    QueryStr = "Not " & Combo1 & " Like '*" & FindStr & "*'"

    Case Else   '除包含和不包含外的其它字段

    If InStr(Trim(Combo1), "出生年月") <> 0 Then    '日期型字段兩端加#號(hào)

    QueryStr = Combo1 & " " & Trim(Left(Combo2, 4)) & "  #" & FindStr & "#"

             Else   '非日期型其它字段

    QueryStr = Combo1 & " " & Trim(Left(Combo2, 4)) & " '" & FindStr & "'"

             End If

    End Select

 Me.Hide

 Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "單項(xiàng)條件查詢"

    Resume Next

End Sub

⑷、“取消”命令鍵的點(diǎn)擊事件代碼如下:

Private Sub Command2_Click()           '取消

    QueryStr = ""

    Me.Hide

End Sub

五、多項(xiàng)條件查詢

1、多項(xiàng)條件查詢窗體

在查詢主窗體中點(diǎn)擊“多項(xiàng)查詢”將彈出多項(xiàng)條件查詢窗體(圖三)。窗體上的主要控件有:

1、 
一個(gè)表格控件(MSFlexGrid),用于顯示已定義的條件,即查詢條件顯示區(qū)。

2、    五個(gè)命令鍵:Command1(確認(rèn)修改)、Command2(增加條件)、Command3(刪除條件)、Command4(取消返回)、Command5(查詢)。

3、    四個(gè)下拉列表框Combo0、Combo1、Combo2、Combo3及一個(gè)Text1文本框,用于輸入或修改條件,即查詢條件編輯區(qū)。其中

邏輯關(guān)系下拉列表(Combo0)為邏輯關(guān)系符“AND、OR”。在邏輯關(guān)系符中還應(yīng)該有“Not”,但是,由于數(shù)學(xué)關(guān)系符LikeNot Like、=與<>、<與≥、>與≤互為Not關(guān)系,已具有Not功能,因而忽略。

查詢項(xiàng)目下拉列表(Combo1)為查詢主窗體上Data1所關(guān)聯(lián)的數(shù)據(jù)庫(kù)的字段;

條件關(guān)系下拉列表(Combo2)為數(shù)學(xué)關(guān)系符“=、<>、<、≤、>、≥、Like(包含)、Not Like(不包含)”;

查詢信息為下拉列表選項(xiàng)(Combo3)或輸入值(Text1)。

當(dāng)查詢項(xiàng)目為“性別、政治面貌、文化程度”等列表字段時(shí),隱藏Text1控件,顯示Combo3控件,此時(shí)查詢者可在Combo3中選擇要查詢的信息項(xiàng);當(dāng)查詢項(xiàng)目選擇“姓名、籍貫、出生年月”等非列表字段時(shí),隱藏Combo3控件,顯示Text1控件,此時(shí)查詢者可在Text1中輸入要查詢的信息值。

Combo3的下拉列表隨查詢項(xiàng)目中選擇的字段而相應(yīng)變化。當(dāng)查詢項(xiàng)目為“性別”時(shí),Combo3的下拉列表有“男、女”兩項(xiàng);當(dāng)查詢項(xiàng)目為“政治面貌”時(shí),Combo3的下拉列表有“中共黨員、共青團(tuán)員、民主黨員、群眾”四項(xiàng);當(dāng)查詢項(xiàng)目為“文化程度”時(shí),Combo3的下拉列表有“本科以上、大學(xué)本科、大學(xué)??啤?埔韵?#8221;四項(xiàng)。

2、多項(xiàng)條件查詢代碼

⑴、多項(xiàng)條件查詢窗體的Form_Load代碼,主要用于向Combo1中添加要查詢的字段并給下拉列表字段數(shù)組賦值。

Private Sub Form_Load()

    On Error GoTo ErrDo

    Combo(1) = "性別"        '向下拉列表字段數(shù)組賦值

    Combo(2) = "政治面貌"

    Combo(3) = "文化程度"

    ConditionNo = 0           '條件數(shù)

    MSFlexGrid.TextMatrix(0, 0) = "序號(hào)"     '表格固定行

    MSFlexGrid.TextMatrix(0, 1) = "邏輯關(guān)系"

    MSFlexGrid.TextMatrix(0, 2) = "查詢項(xiàng)目"

    MSFlexGrid.TextMatrix(0, 3) = "條件關(guān)系"

    MSFlexGrid.TextMatrix(0, 4) = "查詢信息"

    Combo0.Enabled = False    '不顯示邏輯關(guān)系

    Command2.Enabled = False  '無條件時(shí)"確認(rèn)修改"鍵無效

    Command3.Enabled = False  '無條件時(shí)"刪除條件"鍵無效

    Command5.Enabled = False  '無條件時(shí)"查詢"鍵無效

    Text1.Top = Combo3.Top    '文本框Text1Combo3處于同一位置

    QueryStr = ""

    For i = 0 To FrmQuery.Data1.Recordset.Fields.Count – 1

    'Combo1中添加要查詢的字段

        Combo1.AddItem FrmQuery.Data1.Recordset.Fields(i).Name

    Next

    Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "多項(xiàng)條件查詢"

End Sub

    ⑵、點(diǎn)擊Combo1(查詢項(xiàng)目),選擇一個(gè)要查詢的字段后,判斷是否選擇了“性別、政治面貌、文化程度”等下拉列表字段,并據(jù)此控制Combo3Text1的顯示與隱藏及Combo3的列表值。Combo1的點(diǎn)擊事件代碼如下:

Private Sub Combo1_Click()    '查詢項(xiàng)目

    On Error GoTo ErrDo

    Dim ExitFor As Boolean

    CombOrText = False

    For i = 1 To 3

        If Combo1 = Combo(i) Then '若選擇了Combo項(xiàng)則顯示Combo3,隱藏Text1

           Combo3.Visible = True

           Text1.Visible = False

           Combo3.Clear

           For j = 0 To FrmQuery.Combo1(i).ListCount – 1

 '將上級(jí)窗體相應(yīng)的Combo下拉列表加入到Combo3

               Combo3.AddItem FrmQuery.Combo1(i).List(j)

           Next

           CombOrText = True

           Exit For

        Else       '否則顯示Text1,隱藏Combo3

           Combo3.Visible = False

           Text1.Visible = True

        End If

    Next

    Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "多項(xiàng)條件查詢"

End Sub

⑶、多項(xiàng)條件查詢前必須先“增加條件”,即在Combo0(邏輯關(guān)系)列表中選擇邏輯關(guān)系符(多于一個(gè)條件時(shí)),在Combo1(查詢項(xiàng)目)列表中選擇要查詢的字段,在Combo2 (條件關(guān)系)列表中選擇關(guān)系符,并在Combo3中選擇或在Text1中輸入查詢信息后,再點(diǎn)擊“增加條件”鍵。Command1(增加條件)鍵的點(diǎn)擊事件代碼如下:

Private Sub Command1_Click()  '增加條件

    On Error GoTo ErrDo

    If Combo1 = "" Then

       MsgBox "請(qǐng)選擇查詢項(xiàng)目!", vbCritical, "多項(xiàng)條件查詢"

       Exit Sub

    End If

    If Combo2 = "" Then

       MsgBox "請(qǐng)選擇條件關(guān)系!", vbCritical, "多項(xiàng)條件查詢"

       Exit Sub

    End If

    If CombOrText Then    '選擇了Combo項(xiàng),即下拉列表字段

       If Combo3 = "" Then

          MsgBox "請(qǐng)選擇查詢信息!", vbCritical, "多項(xiàng)條件查詢"

          Exit Sub

       End If

    Else       '選擇了Text項(xiàng),即非下拉列表字段

       If Trim(Text1) = "" Then

          MsgBox "請(qǐng)輸入查詢信息!", vbCritical, "多項(xiàng)條件查詢"

          Exit Sub

       End If

    End If

    If ConditionNo = 0 Then

       Combo0.Enabled = False     '若無條件或只有一個(gè)條件則不顯示邏輯關(guān)系

    Else

       Combo0.Enabled = True     '否則顯示邏輯關(guān)系(AndOR

    End If

    ConditionNo = ConditionNo + 1    '條件數(shù)加1

    If ConditionNo > 1 Then MSFlexGrid.Rows = MSFlexGrid.Rows + 1 '查詢條件顯示區(qū)表格增加一行

    If MSFlexGrid.Rows <= 1 Then MSFlexGrid.Rows = MSFlexGrid.Rows + 1

    Text0 = Format(ConditionNo, "00")  '在查詢條件編輯區(qū)顯示條件號(hào)

MSFlexGrid.TextMatrix(ConditionNo, 0) = Format(ConditionNo, "00")  

'在顯示區(qū)顯示條件號(hào)

    MSFlexGrid.TextMatrix(ConditionNo, 1) = Combo0     '在查詢條件顯示區(qū)表格中顯示邏輯關(guān)系

    MSFlexGrid.TextMatrix(ConditionNo, 2) = Combo1     '在查詢條件顯示區(qū)表格中顯示查詢項(xiàng)目

    MSFlexGrid.TextMatrix(ConditionNo, 3) = Combo2     '在查詢條件顯示區(qū)表格中顯示條件關(guān)系

If CombOrText Then     '若選擇了Combo項(xiàng)(即下拉列表字段),則顯示查詢信息:Combo3之值

      MSFlexGrid.TextMatrix(ConditionNo, 4) = Combo3

Else '否則若選擇了Text項(xiàng)(即非下拉列表字段),則顯示查詢信息:Text1之值

      MSFlexGrid.TextMatrix(ConditionNo, 4) = Text1

    End If

    MSFlexGrid.TextMatrix(1, 1) = ""   '第一行不顯示邏輯關(guān)系

    Command2.Enabled = True            '“確認(rèn)修改”鍵有效

    Command3.Enabled = True            '“刪除條件”鍵有效

    Command5.Enabled = True            '“查詢”鍵有效

    Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "多項(xiàng)條件查詢"

End Sub

⑷、“修改條件”時(shí),必須在“查詢條件信息表”中選擇一行,再在“查詢條件編輯區(qū)”各下拉列表中選擇或輸入相應(yīng)的值后,點(diǎn)擊“確認(rèn)修改”鍵。Command2(確認(rèn)修改)鍵的點(diǎn)擊事件代碼如下:

Private Sub Command2_Click()          '確認(rèn)修改

On Error GoTo ErrDo

If CombOrText Then                '若選擇了Combo項(xiàng)(即下拉列表字段)

  If Combo3 = "" Then

    MsgBox "請(qǐng)選擇查詢信息!", vbCritical, "多項(xiàng)條件查詢"

    Exit Sub

  End If

Else         '否則選擇了Text項(xiàng)(即非下拉列表字段)

  If Trim(Text1) = "" Then

    MsgBox "請(qǐng)輸入查詢信息!", vbCritical, "多項(xiàng)條件查詢"

    Exit Sub

  End If

End If

'在查詢條件顯示區(qū)表格中顯示邏輯關(guān)系、查詢項(xiàng)目、條件關(guān)系

MSFlexGrid.TextMatrix(MSFlexGrid.RowSel, 0) = Format(MSFlexGrid.RowSel, "00")

If ConditionNo > 1 Then MSFlexGrid.TextMatrix(MSFlexGrid.RowSel, 1) = Combo0

MSFlexGrid.TextMatrix(MSFlexGrid.RowSel, 2) = Combo1

MSFlexGrid.TextMatrix(MSFlexGrid.RowSel, 3) = Combo2

If CombOrText Then   '若選擇了Combo項(xiàng)(即下拉列表字段),則顯示查詢信息:Combo3之值

  MSFlexGrid.TextMatrix(MSFlexGrid.RowSel, 4) = Combo3

Else  '否則若選擇了Text項(xiàng)(即非下拉列表字段),則顯示查詢信息:Text1之值

  MSFlexGrid.TextMatrix(MSFlexGrid.RowSel, 4) = Text1

End If

MSFlexGrid.TextMatrix(1, 1) = ""   '第一行不顯示邏輯關(guān)系

Exit Sub

ErrDo:

MsgBox Error(Err), vbCritical, "多項(xiàng)條件查詢"

End Sub

⑸、“刪除條件”時(shí),也必須先選擇一行,再點(diǎn)擊“刪除條件”鍵。Command3(刪除條件)鍵的點(diǎn)擊事件代碼如下:

Private Sub Command3_Click()    '刪除條件

On Error GoTo ErrDo

If MSFlexGrid.Rows <= 1 Then Exit Sub  '無條件時(shí)返回

For i = MSFlexGrid.RowSel + 1 To MSFlexGrid.Rows - 1

   For j = 0 To 4

      MSFlexGrid.TextMatrix(i-1, j) = MSFlexGrid.TextMatrix(i, j)

'刪除行以后內(nèi)容分別前移一行

   Next

   MSFlexGrid.TextMatrix(i - 1, 0) = Format(i - 1, "00") 

'刪除一行條件序號(hào)連續(xù)

Next

MSFlexGrid.TextMatrix(1, 1) = ""    '第一行不顯示邏輯關(guān)系

MSFlexGrid.Rows = MSFlexGrid.Rows - 1   '行數(shù)減一

ConditionNo = ConditionNo - 1           '條件數(shù)減一

If MSFlexGrid.Rows <= 1 Then

  Command2.Enabled = False              '無條件時(shí)“確認(rèn)修改”鍵無效

  Command3.Enabled = False              '無條件時(shí)“刪除條件”鍵無效

  Command5.Enabled = False              '無條件時(shí)“查詢”鍵無效

End If

Exit Sub

ErrDo:

MsgBox Error(Err), vbCritical, "多項(xiàng)條件查詢"

End Sub

⑹、按需要設(shè)置好所有查詢條件后,最后點(diǎn)擊“查詢”鍵即可進(jìn)行多項(xiàng)查詢。Command5(查詢)鍵的點(diǎn)擊事件代碼如下:

Private Sub Command5_Click()      '查詢

    On Error GoTo ErrDo

    Dim Str As String

    Dim Col1 As String            '1列,即邏輯關(guān)系

    Dim Col2 As String            '2列,即查詢項(xiàng)目

    Dim Col3 As String            '3列,即條件關(guān)系

    Dim Col4 As String            '4列,即查詢信息

    If ConditionNo = 0 Then MsgBox "請(qǐng)給定查詢條件!", vbCritical, "多項(xiàng)條件查詢"

    QueryStr = ""

    For i = 1 To ConditionNo

      Str = ""

      Col1 = Trim(Left(MSFlexGrid.TextMatrix(i, 1), 4))  '1列,即邏輯關(guān)系

'2列,即查詢項(xiàng)目

      Col2 = FrmQuery.Data1.Recordset.Fields(Trim(MSFlexGrid.TextMatrix(i, 2))).Name

      Col3 = Trim(Left(MSFlexGrid.TextMatrix(i, 3), 4))  '3列,即條件關(guān)系

      Col4 = Trim(MSFlexGrid.TextMatrix(i, 4))         '4列,即查詢信息

      Select Case Col3

      Case "Like"     '數(shù)學(xué)關(guān)系符為"Like",即包含

              Str = Col2 & " " & Col3 & " '*" & Col4 & "*'"

         Case "Not"    '數(shù)學(xué)關(guān)系符為"Not Like",即不包含

              Str = "Not " & Col2 & " Like '*" & Col4 & "*'"

         Case Else      'Like、Not Like外,即除包含及不包含外的其它關(guān)系符

              If InStr(Col2, "出生年月") <> 0 Then

               Str = Col2 & " " & Col3 & "  #" & Col4 & "#"  '日期型字段

              Else

               Str = Col2 & " " & Col3 & " '" & Col4 & "'"   '非日期型字段

              End If

        End Select

        QueryStr = QueryStr & Col1 & " " & Str & " "         '邏輯關(guān)系

    Next

    Me.Hide

    Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "多項(xiàng)條件查詢"

Me.Hide

End Sub

⑺、Command5(取消返回)鍵的點(diǎn)擊事件代碼如下:

Private Sub Command4_Click()     '取消返回

    Me.Hide

End Sub

六、查詢主窗體命令代碼

1.查詢主窗體“單項(xiàng)查詢”命令代碼

查詢主窗體中Command1(單項(xiàng)查詢)鍵的的點(diǎn)擊事件代碼如下:

Private Sub Command1_Click()           '單項(xiàng)查詢

    On Error GoTo ErrDo

    FrmSingle.Show vbModal           '顯示單項(xiàng)條件查詢窗體

    If QueryStr = "" Then Exit Sub        '若單項(xiàng)條件查詢窗體中,點(diǎn)擊了“'取消”鍵

    '過濾記錄,查詢主窗體中的MSFlexGrid1數(shù)據(jù)表格將顯示符合條件的記錄

Data1.RecordSource = "SELECT * FROM 人事檔案 WHERE " & QueryStr

    Data1.Refresh

    Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "單項(xiàng)信息查詢"

End Sub

2.查詢主窗體“多項(xiàng)查詢”命令代碼

查詢主窗體中Command2(多項(xiàng)查詢)鍵的的點(diǎn)擊事件代碼如下:

Private Sub Command2_Click()      '多項(xiàng)查詢

    On Error GoTo ErrDo

    FrmMany.Show vbModal          '顯示多項(xiàng)條件查詢窗體

    If QueryStr = "" Then Exit Sub   '若多項(xiàng)條件查詢窗體中,點(diǎn)擊了“'取消”鍵

    '過濾記錄,查詢主窗體中的MSFlexGrid1數(shù)據(jù)表格將顯示符合條件的記錄

    Data1.RecordSource = "SELECT * FROM 人事檔案 WHERE " & QueryStr

    Data1.Refresh

    Exit Sub

ErrDo:

    MsgBox Error(Err), vbCritical, "信息查詢"

    Command3_Click                '出現(xiàn)錯(cuò)誤時(shí)清除條件

End Sub

3.查詢主窗體“清除條件”命令代碼

Private Sub Command3_Click()      '清除條件

    On Error Resume Next

    '復(fù)位,查詢主窗體中的MSFlexGrid1數(shù)據(jù)表格將顯示所有記錄

    Data1.RecordSource = "SELECT * FROM 人事檔案"

    Data1.Refresh

End Sub

七、運(yùn)行情況

點(diǎn)擊查詢主窗體中的“單項(xiàng)查詢”或“多項(xiàng)查詢”命令鍵后,將根據(jù)設(shè)置的條件過濾記錄,查詢主窗體中的MSFlexGrid1數(shù)據(jù)表格將顯示符合條件的記錄,如設(shè)置圖三所示的多項(xiàng)條件后,主窗體中的MSFlexGrid1數(shù)據(jù)表格將顯示5條符合條件的記錄(圖四)。

進(jìn)行“多項(xiàng)查詢”設(shè)置時(shí),若只設(shè)置一個(gè)條件,則相當(dāng)于單項(xiàng)條件查詢。顯然,單項(xiàng)條件查詢是多項(xiàng)條件查詢的特例。

點(diǎn)擊查詢主窗體中的“清除條件”命令鍵后,查詢主窗體中的MSFlexGrid1數(shù)據(jù)表格將顯示“人事檔案表”中的所有。

八、存在問題

MSFlexGrid表格單元的編輯功能有限,我們對(duì)MSFlexGrid表格單元進(jìn)行編輯時(shí)一般都是通過在單元格上適時(shí)顯示或隱藏Text文本框或Combo下拉列表框,并編輯框內(nèi)的內(nèi)容來實(shí)現(xiàn)的。如果直接在MSFlexGrid表格單元中進(jìn)行條件編輯當(dāng)然是最直觀最方便的方法,但是由于在滑動(dòng)垂直滾動(dòng)條時(shí),較難控制編輯框的顯示與消隱(即在被編輯的單元格移出顯示區(qū)時(shí)應(yīng)消隱編輯框,在被編輯的單元格移入顯示區(qū)時(shí)應(yīng)顯示編輯框)。因此,為克服這些問題,只好應(yīng)用前述的“查詢條件編輯區(qū)”固定所有編輯控件,消極地解決了這個(gè)問題。(完)

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
怎樣添加一個(gè)下拉框到msflexgrid
在VB中把EXCEL文件導(dǎo)入MSFLEXGRID
vb MSFlexGrid數(shù)據(jù)控件數(shù)據(jù)排序
在這個(gè)ERP系統(tǒng)中 要把表單頭 和表單身 在數(shù)據(jù)庫(kù)中 分開 保存
MSFlexGrid控件的事件與方法件與方法
Access教程 第六章 數(shù)據(jù)庫(kù)實(shí)例分析
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服