vb设计人事管理系统时,如何设计一个模块实现搜索功能,数据库为access,用ado连接数据库,请问搜索代码应

2025-04-16 05:30:19
推荐回答(1个)
回答1:

是不是按各个字段的值进行查询搜索?

如果是就发给你看一下我的吧:

怎么没看到我插入的图片呢?

下面是我的代码,要根据你的情况修改哈。

Private Sub dcOK_Click()

  Dim sSql As String

  Dim i As Integer

  Dim j As Integer

  Dim s1 As String

  Dim s2 As String

  Dim s3 As String

  Dim s4 As String

  Dim s5 As String

  Dim s6 As String

  Dim s7 As String

  Dim s8 As String

  Dim sRet As String

  Dim sRC As String

  Dim RS As ADODB.Recordset

  s6 = frmClient.lblTableName.Caption

  If sMingXi_DiDa = "" Then

  Else

     s6 = sMingXi_DiDa

'     If InStr(1, sMingXi_DiDa, "ZHULIN") <> 0 Then

'        s6 = "ZHULIN_SHENQING_MINGXI_G"

'     Else

'        s6 = "WEIXIU_CHELIANG_MINGXI"

'     End If

  End If

  s5 = ""

  j = 0

  For i = 0 To Me.Check1.UBound

     If Me.Check1(i).Value = 1 Then

        s1 = Me.Check1(i).Caption

        s2 = Me.Combo1(i).Text

        s3 = Me.Combo2(i).Text

        s4 = Me.Combo3(i).Text

        s7 = Me.Combo4(i).Text

        If j <> 0 Then

            If s7 = "与" Then

               s7 = " and "

            Else

               s7 = " or "

            End If

        Else

            s7 = ""

        End If

        j = j + 1

        '这里还有问题,有待改进!!!!!!

        If s1 = "" Or s2 = "" Or s3 = "" Then '只要一个为空则不计算

        Else

           If (s2 = "介于" Or s2 = "不介于") And s4 = "" Then ''不计算

           ElseIf s2 = "介于" And s4 <> "" Then 'BETWEEN

              s5 = s5 & s7

              s5 = s5 & s1 & " between '" & s3 & "' and '" & s4 & "'" ' & s7

           ElseIf s2 = "不介于" And s4 <> "" Then 'BETWEEN

              s5 = s5 & s7

              s5 = s5 & s1 & " not between '" & s3 & "' and '" & s4 & "'" ' & s7

           ElseIf s2 = "近似" Then

              s5 = s5 & s7

              s5 = s5 & s1 & " like '%" & s3 & "%'" ' & s7

           ElseIf s2 = "不近似" Then

              s5 = s5 & s7

              s5 = s5 & s1 & " not like '%" & s3 & "%'" ' & s7

           Else 'If s2 <> "介于" And s2 <> "不介于" Then

              s5 = s5 & s7

              s5 = s5 & s1 & s2 & "'" & s3 & "'" ' & s7

           End If

        End If

     End If

  Next i

  If s5 = "" Then

     sSql = "select * from " & s6

  Else

     's5 = Left(s5, Len(s5) - Len(" and "))

     sSql = "select * from " & s6 & " where " & s5

  End If

  Set RS = DoTSQL(sSql, sOK)

  If sOK = "FALSE" Then

     GoTo ERR1

  Else

     s8 = frmClient.DiDaSG1.CellGetValue(0, 1)

     sRet = ShowDataDida(RS, frmClient.DiDaSG1, s8, sRC, "")

     frmClient.StatusBar1.Panels("JLQK").Text = "记录:" & sRC ' frmClient.DiDaSG1.RowGetCount - 2

     'Call frmClient.dcCommand_Click(5)

  End If

  Set RS = Nothing

  Exit Sub

ERR1:

End Sub