2009-10-04 78 views
4

我開發了一個模塊並將數據存儲到MS Access數據庫(mdb)中。一個Field使用DateTime Name(Date_of_Installation)作爲參考。記錄存儲正常。當我使用OleDBDataAdaptor檢索記錄以填充DataSet時,datetime問題正在改變數據庫中的格式,以便如何更改數據庫中的日期時間格式。 實例查詢MS Access中的日期時間格式

command.CommandText = "Select * from LicenseDetails where 
    instr(1,"+ArgName+",'" + Value + "') and Date_of_Installation between 
#06/08/2009 1:31:10 PM# and #10/09/2009 2:54:57 PM#; 

我使用2005年的Visual Studio。如何使用Linq?

回答

7

如果我明白你想要做什麼,你想使用OleDb適配器填充一個DataSet到MS Access,然後用上面的查詢過濾該DataSet。那是對的嗎?

如果是這樣,那麼返回的DataSet中的日期列應該包含DateTime類型,您應該能夠使用LINQ來查詢DataSet。 Click here爲ADO.NET博客文章如何做到這一點。

你的LINQ表達式將類似於:

var query = from r in MyDataSet.Tables["LicenseDetails"].AsEnumerable() 
    where r.Field<DateTime>("Date_of_Installation") >= new DateTime(6,8,2009,13,31,10) 
    && r.Field<DateTime>("Date_of_Installation") <= new DateTime(10,9,2009,14,54,57) 
    select r; 

FYI instr(1,"+ArgName+",'" + Value + "')返回一個int是價值的ArgName從位置1,或者從零開始,如果沒有找到它的位置。如果這些字符串是以字符串形式給出的,那麼它只會返回零,這個Access可能在Where子句中被解釋爲false並且不返回任何結果。如果要在C#中使用另一個字符串獲取字符串的位置,請使用string.IndexOf(),如果要查明一個字符串是否包含另一個字符串,請使用string.Contains()另請注意,Access中的between..and包含起始/終結點,就像上面的LINQ一樣。

+3

+1瞭解問題! – 2009-10-04 18:53:57