2014-02-19 37 views
2

我已經使用C#,asp.net創建了搜索Web窗體。我有搜索參數,如客戶名稱,日期範圍(從&到)。我已經爲上面的參數進行了搜索。它的工作正常,但是當我只搜索客戶名稱而不是日期範圍時,它不顯示記錄。請給我解決方案給空條件的日期範圍相同'%'運營商在'LIKE'條件。按日期範圍搜索記錄,如果日期範圍爲空,則使用SQL

+1

的基礎上所有符合條件的記錄發佈您的SQL查詢。你使用動態SQL? –

+0

選擇custname,fromdate,從custleavetable todate,其中custname如'%'+ txtcustname.text +「%'和fromdate」'+ txtfrom.text +「'AND'」+ txtto.text +「'之間的日期和'todate between' + txtfrom.text +「'AND'」+ txtto.text +「' – Ishita

回答

0

讓說你逝去的以下3個參數的SP

@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:在UI沒有規定這樣@FromDateNULL和條件,(T1.FROMDATE >= @FromDate OR **@FromDate IS NULL**)將返回true FROM日期。

案例2:TODATE不是在UI指定所以@ToDateNULL和條件ND (T1.TODATE <= @ToDate OR @ToDate IS NULL)將返回true。

情況3:無論從日期和爲了在該情況下,兩個以上條件(情況1和情況2)不指定日期將是真實的查詢將返回的T1.Name LIKE '%' + @Input + '%'

+0

如果我還沒有輸入搜索的日期範圍,並且只有當我按名稱搜索時纔會顯示任何記錄(從日期到日期的記錄) ,這個查詢不起作用 – Ishita

+0

我想你沒有正確地檢查where子句。它肯定會返回匹配的記錄。我已經更新了我的答案,請檢查。 – PSK

+0

這工作正常,沒有SP,我必須在SP中給出條件,但是從多個表中獲取數據,所以如何將它們放在一個存儲過程中(此SP僅屬於一個表) – Ishita