2012-10-10 28 views
2

我試圖讓以下兩個查詢正常工作,但我只能得到第一個工作。通過MSADO獲取查詢以在Access中工作

querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<";"; 

querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= #DateAdd (\"yyyy\", -1, Now())# ORDER by DATE ASC;"; 
querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= #DateAdd (\"yyyy\", -1, #10/09/2012 09:12#)# ORDER by DATE ASC;"; 

如果你們有什麼想法,我將非常感激, 謝謝, 詹姆斯

回答

0

DateAdd()返回日期/時間值,並且由於是數據庫引擎可以使用它的返回值。 ..所以你不需要包含#分隔符。

Date是保留字。如果您使用它作爲表中字段的名稱,請將其括在方括號中以避免混淆數據庫引擎。

" where [Date] >= DateAdd(\"yyyy\", -1, #10/09/2012 09:12#) ORDER by [DATE] ASC;" 

的分貝發動機將接受單,而不是與供DateAdd()的間隔參數(YYYY)雙引號。我不知道這是否會在C++什麼複雜的,但我會嘗試這種方式:

" where [Date] >= DateAdd('yyyy', -1, #10/09/2012 09:12#) ORDER by [DATE] ASC;" 

如果你有機會用,我想你會過得更好與接入創建和測試你的查詢查詢設計器,然後在C++中使用經過驗證的SQL。

+0

非常感謝,絕對精彩!非常感謝! – James

0

這將工作:

querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= DateAdd (\"yyyy\", -1, Now()) ORDER by DATE ASC;"; 
querystream << "select Date, C"<<m_ID<<" from Data" <<nTable <<" where Date >= DateAdd (\"yyyy\", -1, #10/09/2012 09:12#) ORDER by DATE ASC;"; 

而且(基本上,之前和DateAdd函數後丟棄#),它是用#YYYY-MM-DD HH一個好主意:MM#格式爲第二個查詢(根據您的本地化設置,它可以是#2012-09-10 09:12#或#2012-10-09 09:12#在您的示例中取決於您的本地化設置