MaxRecords 属性指示通过查询返回 Recordset 的记录的最大数目。
设置和返回值
设置或返回长整型值。默认值为零(没有限制)。
说明
使用 MaxRecords 属性可对提供者从数据源返回的记录数加以限制。该属性的默认设置为零,表明提供者返回所有所需的记录。Recordset 关闭时,MaxRecords 属性为读/写,打开时为只读。
----------------------------------------------------------------------
rs.CreateInstance(__uuidof(Recordset));
rs->MaxRecords = 10;
rs->Open("select * from adminusers where userid > 1000 order by userid",
db.GetInterfacePtr(), 
adOpenForwardOnly,
adLockReadOnly,
adCmdText);
sprintf ( s, "\r\nmaxRecords:%d\r\n", rs->MaxRecords);
OutputDebugString( s );
while ( !rs->adoEof )
{
......
}问题:
rs->open之后观察rs->MaxRecords为10,表示MaxRecords属性设置成功
但是遍历rs以后,发现rs仍然返回了上千条记录
明显和MaxRecords定义不附谁知道原因以及如何让MaxRecords起作用/或者谁能给个变通的解决方案?急

解决方案 »

  1.   

    你最好不要用maxRecords因为在ado里面不可能同时把那么多的数据从服务机器到客户机器
    最好用sql和遍历的方法
    select count(*) as cc fro tt
    或者while(rs->Eof)
    {
    nCount++;也可一
    }
      

  2.   

    to checkyvc6(checkyvc6) :
    我想你没弄懂我的意思我就是不想把太多数据加载进内存,才会需要用到MaxRecords。SQL和遍历当然要用,没看到我的程序吗?
    程序里面:
    "select * from adminusers where userid > 1000 order by userid"
    这个就是SQLwhile ( !rs->adoEof )
    {
    ......
    }
    这个就是遍历
    现在关键问题是我需要在SQL返回的记录集中只取需要的条目比如我只需要1条最符合的记录,那么我可以设置maxrecords=1或者我只想取前3条记录,那么可以设置maxrecords = 3我不想在我只需要10条记录的时候,recordset返回给我上千条count但是实际情况是maxrecords这个属性不好用,怎么解决?
      

  3.   

    sql server可以用 select Top 10 *... 
    如果是oracle就不行了。
      

  4.   

    pRstTemp->MaxRecords=10;        pRstTemp->Open("SELECT title,price FROM Titles "
                "ORDER BY Price DESC",strCnn,adOpenForwardOnly,
                adLockReadOnly,adCmdText);