CRecordset m_pRecordSet;
CDatabase m_pDatabase;
执行下列语句时,是先排序后查询;
m_pRecordSet.m_strSort = "姓名,年龄";
m_pRecordSet.Open();
或:
m_pRecordSet.m_strSort = "姓名,年龄";
m_pDatabase.SetQueryTimeout(100000);
m_pRecordSet.Open();
但是当数据库中有大约30万条记录时,采用以上两种方式执行到m_pRecordSet.Open()就会弹出“用户已请求取消当前操作”的对话框;
如果只执行m_pRecordSet.Open()就不会弹出对话框;
请问有何办法解决数据量大时先排序后查询的问题。

解决方案 »

  1.   

    m_pRecordSet.Open()
    m_pRecordSet.m_strSort = "姓名,年龄";
    m_pRecordSet.m_strFilter = "****";  //查询条件
    m_pRecordSet.Requery();
      

  2.   

    不行啊!按楼上石头的方法还是会弹出“用户已请求取消当前操作”的对话框。我觉得在Requery()时数据量还是太大。
      

  3.   

    如果是SQL SERVER数据库的话到SQL SERVER版问一下,那儿高手很多
      

  4.   

    我用的是ORACLE8i,通过ODBC连接。不知各位大虾还有何高招?谢谢!
      

  5.   

    直接用SQL,比用哪些成员变量,谁也不知道MFC到底做了什么?