根据用户选择构建SQL Server查询

时间:2017-08-17 16:45:53

标签: sql-server

我有一个小应用程序,它将访问警报日志数据库和一个具有可由用户选择的可选过滤器的表单。如果未选择过滤器,则拉取记录的查询为

strCommandText = "SELECT [Alarm Number], Device, Description, Severity, CauseMnemonic, [Start Time], [End Time]," _
                & "Zone, Category, [Downtime Flag], Duration FROM Alarmlog"

如果选中任何过滤器复选框,并且匹配字段有值,我想将其作为参数添加到查询中。我将此工作用于一个或另一个过滤器 - 但不应用多个过滤器。

If bFilterAlarmNumber Or bFilterCategory Or bFilterCause Or bFilterDate _
                Or bFilterDate Or bFilterDescription Or bFilterDevice Or bFilterDowntime _
                Or bFilterSeverity Then
                    strCommandText = strCommandText + " WHERE "
                End If
                If bFilterAlarmNumber Then
                    Command.Parameters.AddWithValue("@AlarmNumber", strAlarmNumber)
                    strCommandText = strCommandText & " [Alarm Number] LIKE '%' + @AlarmNumber + '%'"
                End If
                If bFilterCategory Then
                    Command.Parameters.AddWithValue("@Category", strCategory)
                    strCommandText = strCommandText & " Category LIKE '%' + @Category + '%'"
                End If
                Command.CommandText = strCommandText

我意识到我需要在我的参数之间添加“AND”,但我的问题是 - 有人可以推荐一种方法吗?如果检查过任何一个过滤器,则不会应用AND。我正在为包含WHERE子句做类似的事情,但我认为这有点复杂。

谢谢

0 个答案:

没有答案