我已经将记录放入m_pRs里,当点击按钮时希望移动记录到下一条,到达记录末时,
希望移到第一条,写了下面语句,但到达最后一条记录时,在点按钮就会报错,
错误信息为:
Runtime Error
program:f:\.....\debug\aa.exe
abnormal program termination代码如下:
void CMyDlg::OnButton1() 
{
    CString str;
_variant_t v;
if(m_pRs->EndOfFile)
{
    m_pRs->MoveFirst();
}
else
{
    m_pRs->MoveNext();
}
v=m_pRs->GetCollect("单位名称");
str=(char*)_bstr_t(v);
m_name=str.GetBuffer(0);
    v.Clear();

UpdateData(FALSE);
}
请高手帮忙,在线等待结帖。

解决方案 »

  1.   

    if(!(m_pRs->EndOfFile == VARIANT_FALSE))
    {
    ...;
    }
    试试看
      

  2.   

    我也觉得if(m_pRs->EndOfFile)不完整。
      

  3.   

    TO LYGFQY
    我用你的if(!(m_pRs->EndOfFile == VARIANT_FALSE))来替换我的if(m_pRs->EndOfFile)
    还是同样的错误。该怎么办呀?
      

  4.   

    用这个试试 if(0!=m_pRs->Fields->Count)
      

  5.   

    to monbo
    我想你是误解我的意思了,记录里肯定有记录,我知识想移到记录末尾时候转到第一条记录而已。有谁知道?谢谢!
      

  6.   

    if(m_pRs->adoEOF)
    {
    m_pRs->MoveFirst();
    }
    else
    {
    m_pRs->MoveNext();
    }注意正确设置rs的游标类型,否则不能MoveFirst
      

  7.   

    我用的是:
    m_pRs->Open("select 单位名称 from f_dw where id<=10",m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    应该不是游标的问题吧,我刚试了,可以向前,也可以向后。
      

  8.   

    我刚才又试了一下m_pRs->MoveFirst(),能到第一条。
    前提是我已经将记录移到了非第一条,但放到if语句就报错,是不是
    if(m_pRs->EndOfFile)没法判断是否到了末尾,以至于到了末尾还m_pRs->MoveNext()
    操作引起的?
      

  9.   

    do like this
    ...
    m_pRs->MoveNext();//如果是最后一条记录,则m_pRs->EndOfFile触发为TRUE
    if(m_pRs->EndOfFile)
    {
        m_pRs->MoveFirst();
    }
    ...