当你使用了m_strfilter来过滤后,
你再使用 MoveNext来移动记录集光标时,
那些不在筛选范围内的记录将不会再被光标选中
你可以认为现在你的CRecordset集合中只存在你筛选后符合条件的记录了这些记录你可以使用 MoveFirst, 然后使用MoveNext来依次显现出来啊.

解决方案 »

  1.   

    还有一个Access生成的记录集能储存多少个记录
      

  2.   


    degyhy123(degyhy) :
       怎么判断是最后一个?!!
       还和以前一样判断啊!
       你可以认为使用了 m_strfilter过滤了以后,被过滤掉的记录已经不在记录集中存在了,现在剩下的记录集是一个新的符合过滤条件的记录集.
       所以还是可以使用 EOF来判断是否到达记录集的最后一条的.   还有,一个记录集不是针对ACCESS或者别的数据库的,它之所以能访问这么多的数据库,是因为系统提供了访问这些数据库的驱动,ADO 通过OLEDB访问底层的各种数据库,这就是有些OLEDB的特性在不同的数据库上有不同程度支持的原因,那是因为这种数据库的驱动不支持这种特性的缘故.说到这里你可以明白记录集是和具体数据库无关的了吧?
       
      

  3.   

    恢复的话可以把m_strFiler = "";之后Requery();
      

  4.   

    判断是不是到底了很简单啊!
    呵呵,
    m_pset->IsEOF();通过这个来判断,
    建议用:
    (m_pset->IsBOF&&m_pset->IsEOF())来判断
      

  5.   

    我想应该是这样操作:
    假设你建立的类名是CASet,那么:CASet* m_pSet;
    m_pSet->m_strfilter="字段名=条件指";
    if(m_pSet->Isopen()) m_pSet->Close();
    m_pSet->Open();
    if(m_pSet->IsBOF()) return;
    m_pSet->MoveFirst();
    While(!m_pSet->IsEOF){     //如果到了最后一个记录,循环结束,也就是说
                              //如果到了最后一个记录时m_pSet->IsEOF返回非0值 
    //输入显示记录m_pSet->...的函数;
    .....
    m_pSet->MoveNext();
    }这样就能把符合查询条件的所有记录都显示出来了。
      

  6.   

    有没有好心人给我详细的说说m_strfilter的用法。我都快让她搞疯了
      

  7.   

    m_strFilter 要写你的 select 语句的 where 后面的部分select * from xxx where name='abc'写成:  set.m_strFilter="name='abc'";
      

  8.   

    CRecordSet mdb;
    mdb.m_strfilter.format("name=%s",abc);
    mdb.Open();
    在双引号内填写你所需要的符合的条件
      

  9.   

    为什么我用了set.m_strFilter()后,在Requery(),但是不行,怎么回事
      

  10.   

    没必要requery();
    可以一次查询多条记录,
    然后不断变换Filter以从Recordset中得到符合条件的记录,
    设置Filter=“”则全部记录可见。
      

  11.   

    我在ListView中添加了右键双击的消息源代码如下:

    int index = lc.GetNextItem(-1,LVNI_SELECTED);
    if(index==-1) AfxMessageBox("清选择更新纪录");
    CString str = lc.GetItemText(index,0);
    CString sql(_T("[Name] = "));
    sql += "'";
    sql += str;
    sql += "'";
    pRS->m_strFilter =sql;
    pRS->Requery();
    但我的代码是抄袭的,不明白为什么他就能选择不同的记录,还有为什么我的代码无论我在视图中选择那个记录,就只能显示一个相同的记录,
      

  12.   

    我在ListView中添加了右键双击的消息源代码如下:

    int index = lc.GetNextItem(-1,LVNI_SELECTED);
    if(index==-1) AfxMessageBox("清选择更新纪录");
    CString str = lc.GetItemText(index,0);
    CString sql(_T("[Name] = "));
    sql += "'";
    sql += str;
    sql += "'";
    pRS->m_strFilter =sql;
    pRS->Requery();
    但我的代码是抄袭的,不明白为什么他就能选择不同的记录,还有为什么我的代码无论我在视图上选择那个记录,就能显示唯一的一个记录,