2014-02-19 4 views
2

Я создал веб-форму поиска с использованием C#, asp.net. У меня есть параметры поиска, такие как имя клиента, диапазон дат (от & до). Я написал запрос для поиска по указанному выше параметру. Его работа прекрасна, но когда я ищу только по имени клиента не по дате, тогда он не показывает записи. Пожалуйста, дайте мне решение, чтобы дать условие для пустого диапазона дат, как '%' оператор в 'LIKE' состояние.Поиск записей по диапазону дат и если диапазон дат пуст с использованием SQL

+1

разместите свой запрос sql. Вы используете динамический sql? –

+0

выберите custname, fromdate, todate from custleavetable, где custname как «%» + txtcustname.text + «%» и fromdate между «+ txtfrom.text +» «AND» + txtto.text + «» и todate между ' + txtfrom.text + "'AND'" + txtto.text + "' – Ishita

ответ

0

Пусть говорят, вы передаете следующие 3 параметра СП

@Input VARCHAR(100) 
@FromDate DATETIME 
@ToDate DATETIME 

Если вы хотите искать только на основе имени клиента в этом случае проход NULL значение для FromDate и ToDate и напишите ваш запрос следующим образом.

SELECT COL1,COL2,COL3.... 
FROM TABLET1 T1 
WHERE T1.Name LIKE '%' + @Input + '%' 
AND (T1.FROMDATE >= @FromDate OR @FromDate IS NULL) 
AND (T1.TODATE <= @ToDate OR @ToDate IS NULL) 

Случай 1: FromDate не указано в пользовательском интерфейсе так @FromDate будет NULL и условие И (T1.FROMDATE >= @FromDate OR **@FromDate IS NULL**) возвращает истину.

Случай 2: ToDate не указано в пользовательском интерфейсе так @ToDate будет NULL и состояние ND (T1.TODATE <= @ToDate OR @ToDate IS NULL) возвращает истину.

Случай 3: И С датой и до настоящего времени, не указанное в этом случае как вышеуказанных условиях (случай 1 и случай 2) будет справедливо и запрос будет возвращать все совпадающие записи на основе T1.Name LIKE '%' + @Input + '%'

+0

, если я не ввел диапазон дат для поиска и только в том случае, если я ищу по имени, тогда он не показывает никакой записи (записи, имеющие дату и дату) , этот запрос не работает – Ishita

+0

Я думаю, что вы не проверили правильное предложение where. Он обязательно вернет соответствующие записи. Я обновил свой ответ, пожалуйста, проверьте. – PSK

+0

Это нормально работает без SP, я должен предоставить условия в SP, но я получаю данные из нескольких таблиц, поэтому как я могу поместить их в одну хранимую процедуру (этот SP принадлежит только одной таблице) – Ishita

Смежные вопросы