Sql 是否有多个复选框勾选了VB6?

Sql 是否有多个复选框勾选了VB6?,sql,vb6,Sql,Vb6,我有一个程序,当点击搜索时,会显示产品列表。创建新产品时,会有一个“活动”复选框,该复选框会自动设置为True。用户可以编辑任何产品,如果需要,可以将产品更改为“非活动” 在搜索表单上,有两个复选框:活动和非活动。 程序加载时,始终勾选活动复选框。如果用户希望同时查看非活动产品,则应能够勾选这两个选项 当我勾选“活动”时,列表框将显示所有活动项目,当我仅勾选“非活动”时,列表框将显示非活动项目。但是,当我同时勾选这两个选项时,只显示非活动产品 这是我的代码: Private Sub cmdPro

我有一个程序,当点击搜索时,会显示产品列表。创建新产品时,会有一个“活动”复选框,该复选框会自动设置为True。用户可以编辑任何产品,如果需要,可以将产品更改为“非活动”

在搜索表单上,有两个复选框:活动和非活动。 程序加载时,始终勾选活动复选框。如果用户希望同时查看非活动产品,则应能够勾选这两个选项

当我勾选“活动”时,列表框将显示所有活动项目,当我仅勾选“非活动”时,列表框将显示非活动项目。但是,当我同时勾选这两个选项时,只显示非活动产品

这是我的代码:

Private Sub cmdProdSearch_Click()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim list_item As ListItem
    Dim itm As ListItem


    db_file = db_file & "ProductsDatabase1.mdb"
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ProductsDatabase1.mdb;" & _
    "Persist Security Info=False" & _
    "Data Source=" & db_file & ";" & _
    "Persist Security Info=False"
    conn.Open

    Set rs = conn.Execute("Select * from Export where Product like '%" & _
        txtProduct.Text & "%'")
    If chkActive.Value = 1 Then
        Set rs = conn.Execute("Select * from Export where Inactive = '0'")
    Else
        Set rs = conn.Execute("Select * from Export where Inactive = '1'")


        ListView1.ListItems.Clear

        With ListView1
            .View = lvwReport
            .FullRowSelect = True
            Do While Not rs.EOF
                Set itm = .FindItem(txtProduct.Text, lvwText, , lvwPartial)
                Set list_item = .ListItems.Add(, , rs!Product)
                list_item.SubItems(1) = rs!barcode & ""
                list_item.SubItems(2) = rs!quantity & ""
                list_item.SubItems(3) = rs!Department & ""
                list_item.SubItems(4) = rs!Active & ""
                list_item.SubItems(5) = rs!Inactive
                rs.MoveNext
            Loop
        End With
    End If

End Sub
我还使用Access数据库存储产品信息,并使用SQL语句查找信息


当两个复选框都勾选时,是否有任何关于显示机器人活动和非活动项目的建议?

您需要更新逻辑。写入的
ListView1
仅在
chkActive.Value 1
时更新

通常我会创建一个单独的字符串变量来保存我的SQL,然后根据条件构建搜索。。。下面是代码的一个编辑,它执行此操作,并包括不同复选框的逻辑路径。它假定您的另一个复选框被称为
chkInactive

Private Sub cmdProdSearch_Click()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim list_item As ListItem
    Dim itm As ListItem
    dim SQL as string

    db_file = db_file & "ProductsDatabase1.mdb"
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ProductsDatabase1.mdb;" & _
    "Persist Security Info=False" & _
    "Data Source=" & db_file & ";" & _
    "Persist Security Info=False"
    conn.Open

    SQL = "Select * from Export where Product like '%" & txtProduct.Text & "%'"
    If chkActive.Value = 1 Then
        If chkInactive.Value = 1 Then
            'do nothing because criteria is already set.
        Else
            SQL = SQL & " AND Inactive = '0'"
        End If
    ElseIf chkInactive.Value = 1 Then
        SQL = SQL & " AND Inactive = '1'"
    Else
        'Do something because neither are checked?
    End If
    Set rs = conn.Execute(SQL)
    ListView1.ListItems.Clear

    With ListView1
        .View = lvwReport
        .FullRowSelect = True
        Do While Not rs.EOF
            Set itm = .FindItem(txtProduct.Text, lvwText, , lvwPartial)
            Set list_item = .ListItems.Add(, , rs!Product)
            list_item.SubItems(1) = rs!barcode & ""
            list_item.SubItems(2) = rs!quantity & ""
            list_item.SubItems(3) = rs!Department & ""
            list_item.SubItems(4) = rs!Active & ""
            list_item.SubItems(5) = rs!Inactive
            rs.MoveNext
        Loop
    End With
End Sub

你需要更新你的逻辑。写入的
ListView1
仅在
chkActive.Value 1
时更新

通常我会创建一个单独的字符串变量来保存我的SQL,然后根据条件构建搜索。。。下面是代码的一个编辑,它执行此操作,并包括不同复选框的逻辑路径。它假定您的另一个复选框被称为
chkInactive

Private Sub cmdProdSearch_Click()
    Dim conn As ADODB.Connection
    Dim rs As ADODB.Recordset
    Dim list_item As ListItem
    Dim itm As ListItem
    dim SQL as string

    db_file = db_file & "ProductsDatabase1.mdb"
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\ProductsDatabase1.mdb;" & _
    "Persist Security Info=False" & _
    "Data Source=" & db_file & ";" & _
    "Persist Security Info=False"
    conn.Open

    SQL = "Select * from Export where Product like '%" & txtProduct.Text & "%'"
    If chkActive.Value = 1 Then
        If chkInactive.Value = 1 Then
            'do nothing because criteria is already set.
        Else
            SQL = SQL & " AND Inactive = '0'"
        End If
    ElseIf chkInactive.Value = 1 Then
        SQL = SQL & " AND Inactive = '1'"
    Else
        'Do something because neither are checked?
    End If
    Set rs = conn.Execute(SQL)
    ListView1.ListItems.Clear

    With ListView1
        .View = lvwReport
        .FullRowSelect = True
        Do While Not rs.EOF
            Set itm = .FindItem(txtProduct.Text, lvwText, , lvwPartial)
            Set list_item = .ListItems.Add(, , rs!Product)
            list_item.SubItems(1) = rs!barcode & ""
            list_item.SubItems(2) = rs!quantity & ""
            list_item.SubItems(3) = rs!Department & ""
            list_item.SubItems(4) = rs!Active & ""
            list_item.SubItems(5) = rs!Inactive
            rs.MoveNext
        Loop
    End With
End Sub

如果chkInactive.Value=1,那么为什么不执行其他操作?@Fred如果chkaactive和chkInactive都为true,那么应该返回所有记录,如txtProduct.Text,因此无需向where子句添加提及非活动标志的参数,因为它的值是不相关的。所以为什么不让If chkInactive.value=0然后SQL=SQL&“和Inactive='0'”结束If。NoElse子句?为什么要If chkInactive.Value=1,然后不做任何其他事情?@Fred如果chkaActive和chkInactive都为true,则应返回所有记录,如txtProduct.Text,因此无需向where子句添加提及非活动标志的参数,因为它的值是不相关的。所以为什么不让If chkInactive.value=0然后SQL=SQL&“和Inactive='0'”结束If。没有其他条款吗?