2013-10-17 34 views
2

我有一個數據表(DT),其過濾數據表使用Select()

StartDate EndDate Price 
    1    3   10 
    4    6   12 
    7    10   16 
    11    15   20 

我想從沒有fromdate = 2和todate = 8之間的日期篩選值。

,所以我希望得到的結果是

StartDate   EndDate  Price 
     1    3   10 
     4    6   12 
     7    10   16 

我用VB的DataTable選擇原樣>

dt.Select("StartDate <= #" & fromdate& "# And EndDate >= #" & todate& "#") 

,但我沒有得到結果。 u能請建議我..

+2

不應該是'startDate> = ...和EndDate <= ...'?另外,使用'''(撇號)代替'#'。 – shahkalpesh

+0

預期結果不匹配'fromdate = 2到todate = 8之間的日期' –

+0

您的預期結果與您的條件不符,因爲'4'和'7'大於'2',而且endate也沒有匹配爲'3'和'6'小於'8'。 – Tafari

回答

2

您的查詢應該是這樣的:

dt.Select("StartDate <= #" & todate & "# And EndDate >= #" & fromdate & "#") 

找到與你的範圍重疊的記錄。

+0

'todate'和'fromdate'交換。 – Szymon

-1

使用DateDiff函數,我的朋友

1

應該

dt.Select("StartDate >= " & fromdate & " And EndDate <= " & todate) 

兩個問題

  1. 您的運營商都錯了。您的開始日期小於2且大於8,而它應該是開始日期大於2且小於8的日期

  2. 無論#是否假設列是整數類型,

+0

這是行不通的。它不會返回第一條記錄,因爲1> = 2不正確。 – Szymon

+2

那麼@Pravin Kumars的預期結果並不符合他的條件。 – Tafari

+0

任何替代品@Tafari –