过滤记录集的问题:怎么样用记录集进行多个条件的查询呢

时间:2022-10-12 11:14:37
本人用odbc连接数据库,用到以下语句过滤记录集
CString ppstr;
ppstr="LX='"+m_pp+"'";
m_recordSet.m_strFilter=ppstr;
m_recordSet.Open();
时没问题,但我用以下语句想同时过滤两个条件时

CString ppstr;
ppstr="PP='"+m_pp+"'"+"&&LX='"+m_gn+"'";
m_recordSet.m_strFilter=ppstr;
m_recordSet.Open();
系统报错:语法错误(操作符丢失)在查询表达式'PP='IBM'&&LX='图形''中
各位大虾帮帮忙,怎么样用记录集进行多个条件的查询呢

4 个解决方案

#1


你不会用and 把他连接起来吗?
ppstr="PP='"+m_pp+"'"+"and "+"&&LX='"+m_gn+"'";

#2


是呀,标准的SQL语句都可以用的。

#3


给一个我做过的例子,我可是测试过的!

sprintf(buff2,"Date = '%04d-%02d-%02d' AND ",CurTime.GetYear(),CurTime.GetMonth(),CurTime.GetDay()-1);  
sprintf(buff,"StartTime >= '%02d:00:00' AND StartTime <= '%02d:59:59'",nTemp,nTemp);

sprintf(buff3," AND ChannelNumber = %1d",i);
// 查询报警事件记录
CAlarmInfo     myAlarmEvent(pDatabase);
// 过滤当前日期的当前时间的前一个小时的事件记录集
myAlarmEvent.m_strFilter  = buff2;
myAlarmEvent.m_strFilter += buff;
myAlarmEvent.m_strFilter.Insert(1000,buff3);
myAlarmEvent.Open(CRecordset::snapshot,"AlarmInfo");

#4


呵呵,问题已经解决了,把&&换成and即可

#1


你不会用and 把他连接起来吗?
ppstr="PP='"+m_pp+"'"+"and "+"&&LX='"+m_gn+"'";

#2


是呀,标准的SQL语句都可以用的。

#3


给一个我做过的例子,我可是测试过的!

sprintf(buff2,"Date = '%04d-%02d-%02d' AND ",CurTime.GetYear(),CurTime.GetMonth(),CurTime.GetDay()-1);  
sprintf(buff,"StartTime >= '%02d:00:00' AND StartTime <= '%02d:59:59'",nTemp,nTemp);

sprintf(buff3," AND ChannelNumber = %1d",i);
// 查询报警事件记录
CAlarmInfo     myAlarmEvent(pDatabase);
// 过滤当前日期的当前时间的前一个小时的事件记录集
myAlarmEvent.m_strFilter  = buff2;
myAlarmEvent.m_strFilter += buff;
myAlarmEvent.m_strFilter.Insert(1000,buff3);
myAlarmEvent.Open(CRecordset::snapshot,"AlarmInfo");

#4


呵呵,问题已经解决了,把&&换成and即可