组合查询逻辑

           组合查询时需要理清三个组合内容在查询时是否起到了作用。


            查询时判断查询内容是否为空:

Private Sub btnQuery_Click(sender As Object, e As EventArgs) Handles btnQuery.Click

        dgvGroupCheck.DataSource = ""

        '判断组合框不为空    
        If cmbRelations1.Text = "" Then '如果第一个组合关系框为空    
            If cmbField1.Text = "" Or cmbOperator1.Text = "" Or txt1 = "" Then
                MsgBox("第一行查询条件不能为空!", , "提示")
                Exit Sub
            End If
        End If

        If cmbRelations1.Text <> "" Then '如果选择了第一个组合关系    
            If cmbField2.Text = "" Or cmbOperator2.Text = "" Or txt2 = "" Then
                MsgBox("第二行查询条件不能为空!", , "提示")
                Exit Sub
                If cmbRelations2.Text <> "" Then '选择了第一个组合关系后,又选择了第二个组合关系    
                    If cmbField3.Text = "" Or cmbField3.Text = "" Or txt3 = "" Then
                        MsgBox("第三行查询条件不能为空", , "提示")
                        Exit Sub
                    End If
                End If
            End If            
        Else
            If cmbRelations1.Text = "" And cmbRelations2.Text <> "" Then '只选择了第二个组合关系    
                    cmbField3.Text = "" Or cmbField3.Text = "" Or txt3 = "" Then
                    MsgBox("第三行查询条件不能为空", , "提示")
                    Exit Sub
                End If
            End If
        End If

           数据库存储过程实现:

             在数据库存储时通过字符串上的叠加来连接成数据库查询语句。

ALTER PROCEDURE [dbo].[GroupQuery]
	-- Add the parameters for the stored procedure here
	@cmbField1 varchar(20),    
    @cmbOperator1 varchar(20),    
    @txtContent1 varchar(20),    
    @cmbField2 varchar(20),    
    @cmbOperator2 varchar(20),    
    @txtContent2 varchar(20),    
    @cmbField3 varchar(20),    
    @cmbOperator3 varchar(20),    
    @txtContent3 varchar(20),    
    @cmbRelations1 varchar(20),    
    @cmbRelations2 varchar(20),    
    @tableName varchar(20)    

AS
declare @TempSql varchar(500)
BEGIN
 SET @TempSql='SELECT * FROM '+@tableName +' WHERE ' +@cmbField1 +@cmbOperator1+char(39) + @txtContent1 + char(39)       
    IF (@cmbRelations1='')    
    BEGIN            
        if (@cmbRelations2!='')    
        BEGIN        
        SET @TempSql=@TempSql+@cmbRelations2+CHAR(32)+@cmbField3+@cmbOperator3+CHAR(39)+@txtContent3+CHAR(39)        
        END        
    END    
	IF (@cmbRelations1!='')    
    BEGIN        
        SET @TempSql=@TempSql+@cmbRelations1+CHAR(32)+@cmbField2 +@cmbOperator2+CHAR(39)+@txtContent2+CHAR(39)     
        if (@cmbRelations2!='')    
        BEGIN        
        SET @TempSql=@TempSql+@cmbRelations2+CHAR(32)+@cmbField3+@cmbOperator3+CHAR(39)+@txtContent3+CHAR(39)        
        END        
    END    
EXECUTE(@TempSql) 
END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值