部分代码如下:
     CString sql;
sql = "select * from dialinfo ";
OpenRecordSet(m_pRecordset,sql);//打开数据库

m_pRecordset->PageSize = 10;
m_iPageCount = m_pRecordset->PageCount;//m_iPageCount得到的值为-1,这是为什么啊?

解决方案 »

  1.   

    m_pRecordset->PageSize = 10; 放到open之前
      

  2.   

    ado
    不行啊,"m_pRecordset->PageSize = 10; 放到open之前"运行会出错的OpenRecordSet(m_pRecordset,sql函数的实现:BOOL OpenRecordSet(_RecordsetPtr &recPtr, CString &strSQL)
    {
    CTestAutoDialApp* pApp=(CTestAutoDialApp*)AfxGetApp();
    m_pRecordset.CreateInstance(__uuidof(Recordset));
    try
    {
    recPtr->Open(strSQL.AllocSysString(), _variant_t((IDispatch*)pApp->m_pConnection,true),
    adOpenDynamic,adLockOptimistic,adCmdText);
    }
    catch (_com_error e)
    {
    CString strError;
    strError.Format("警告:打开数据表时发生异常。 错误信息: %s",\
    e.ErrorMessage());
    AfxMessageBox(strError);
    return FALSE;
    }
    return TRUE;
    }
      

  3.   

    void OnToNextPage() 
    {
    // TODO: Add your control notification handler code here
      if(m_iCurrentPage == m_iPageCount)       
    {       
    MessageBox("已经是最后一页");       
    return;       
    }       
    else       

    CString sql;
    sql = "select * from dialinfo ";
    OpenRecordSet(m_pRecordset,sql);

    PositionEnum page;       
    ++m_iCurrentPage;       
    page=(PositionEnum)m_iCurrentPage;       
    m_pRecordset->AbsolutePage=page;  [b]//这句话运行出错,为什么啊?[/b] ShowData();     
    }  
    }
      

  4.   

    哦,看成CacheSize了
    应该是之后
    打开方式好像没什么问题啊
    什么数据库?
    adOpenForwardOnly,adLockReadOnly
    这是手册上用的属性
      

  5.   

    Access
    打开数据库没有问题的
    现在就是m_pRecordset->AbsolutePage=page; 这一句运行时候就出错了.