我有一个小应用程序,它将访问警报日志数据库和一个具有可由用户选择的可选过滤器的表单。如果未选择过滤器,则拉取记录的查询为
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子句做类似的事情,但我认为这有点复杂。
谢谢