以下代码目的是从一个表中取出TIME字段大于strStartTime
并且小于strEndTime的记录:
CString strFilter;
CString strStartTime="1979-10-10";
CString strEndTime="2003-10-10";strFilter+= "TIME>#"+ strStartTime + "#";strFilter+= "and TIME<#" + strEndTime + "#";


CRecordSet m_Set;
m_Set.m_strFilter=strFilter;
m_Set.Open();运行时报错了,不能获得记录集 请大家指教

解决方案 »

  1.   

    设置过滤属性一定要在记录集打开以后设置
    也就是说你应该这么调用
    m_Set.Open();
    m_Set.SetFilter(strFilter);或者m_Set.m_strFilter=strFilter;
      

  2.   

    SQL数据库:
    sSQL=sSQL+"WHERE convert(character,Log_Date,111)>'"+ sDateFrom+"'";   
    sSQL=sSQL+"AND convert(character,Log_Date,111)< '"+ sDateTo+"'";   如果是ACCESS 用CDATE替换CONVERT.
    sSQL=sSQL+"WHERE CDATE(Log_Date)> '"+ sDateFrom+"'";
      

  3.   

    怎么能这么用啊,在open里面要写入sql语句,还有dsn才可以的吗。
    m_Set.Open();
    m_Set.SetFilter(strFilter);或者m_Set.m_strFilter=strFilter;
    这样又没有用的
      

  4.   


    m_Set.m_strFilter.Format("[TIME]>'%s' and [TIME]<'%s'", strStartTime, strEndTime);
      

  5.   

    谢谢大家,我再重新说明一下我用的是SQL Server 数据库 VC+ODBC连接我看书上讲的:表示时间的字符串必须用"#"不知道是否如此哪我的代码怎么又会错了呢?敬请赐教!
      

  6.   

    pinepingzi:经验证,你把你代码中的#换成单引号就可以了
      

  7.   

    那你试试用MSDN上表示时间的方式:8/24/95,这样写