获取查询以在MSADO上进行访问

时间:2012-10-10 11:16:44

标签: c++ ms-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;";

如果你们有任何想法,我将非常感激, 谢谢, 詹姆斯

2 个答案:

答案 0 :(得分:0)

DateAdd()返回日期/时间值,db引擎可以按原样使用其返回值...因此您不需要包含#分隔符。

Date是保留字。如果您将它用作表中字段的名称,请将其括在方括号中以避免混淆数据库引擎。

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

db引擎将使用DateAdd()的interval参数(yyyy)接受单引号而不是双引号。我不知道这是否会使c ++中的任何内容复杂化,但我会这样尝试:

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

如果您有Access可用,我认为您最好使用Access查询设计器创建和测试您的查询,然后在c ++中使用经过验证的SQL。

答案 1 :(得分: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#,具体取决于您的本地化设置