2013-07-02 119 views
0

我有一個例程來從我的數據庫中拉出數據(沒什麼奇特的)。我希望它能夠拉動其中「StartDate」列是未來某個日期的行。下面的代碼將拉動所有的行,而不是將來的行。VB.Net DataAdapter選擇字符串

我知道它一定是我做的事情愚蠢,但我無法弄清楚。

由於提前,
克雷格

CODE:

Printda = New OleDbDataAdapter("SELECT * FROM tblShows WHERE StartDate > " & Format(Now, "Short Date"), cn) 

更新的代碼:

Printda = New OleDbDataAdapter("SELECT * FROM tblShows WHERE StartDate > '" & Now.ToString("Short Date") & "'", cn) 

更正代碼:

Printda = New OleDbDataAdapter("SELECT * FROM tblShows WHERE StartDate > Now()", cn) 
+0

您正在使用什麼RDBMS? –

+0

@TimSchmelter你是什麼意思由rdbms? –

+1

你有試過Google嗎? ;)SQL-Server,MySql或oracle是rdbms。 'DateTime'函數是不同的。但是你應該在數據庫中這樣做,例如(T-SQL):'SELECT * FROM tblShows WHERE StartDate> GetDate()' –

回答

0

試試這個:

"SELECT * FROM tblShows WHERE StartDate > #" & Now.ToString("MM/dd/yyyy") & "#" 

在SQL Server中,這是默認的日期格式。在Oracle中是YYYY-MM-DD。使用符合您需要的格式,或者如果您不想關心格式並提供查詢安全性,請使用參數。

或者你可以簡單地使用適當的函數來獲得實際日期:

"SELECT * FROM tblShows WHERE StartDate > now()" 
+0

我改變了我的代碼(見上面),但它仍然會拋出一個數據不匹配異常。 –

+0

'Now.ToString(「短日期」)'不正確。試試我的答案。 – SysDragon

+0

該代碼適用於使用MS Access數據庫而非SQL Server的VB.Net項目。對困惑感到抱歉。 –