打开记录集时,
记录Recordcount = -1, Fieldcount>0;
但是数据集并没有EOF,
while (!adoeof)
  ...get_collect(FieldIndex); // FieldIndex从0从1开始都试过产生以下错误.
adErrItemNotFound 3265 0x800A0CC1
ADO 无法在对应于应用程序请求的名称或顺序引用的集合中找到对象。 有一点不懂,既然数据集没结束,怎么会出错呢(查询语句无错,在别处有数据返回)

解决方案 »

  1.   

    virtual HRESULT __stdcall get_Collect (
            VARIANT Index,//数据类型
            VARIANT * pvar ) = 0;Recordcount = -1要看m_pRsOpen的打开方式
    adOpenStatic,adLockOptimistic
    不过在oracle下面,总还是RecoudCount = -1,我也奇怪
      

  2.   

    http://expert.csdn.net/Expert/topicview.asp?id=2872254
      

  3.   

    还是用字段名吧,别用序号了
    GetCollect("fieldname")
    ^_^
      

  4.   

    FieldIndex什么类型?
    试试
    m_pRecrodset->Fields->GetItem(_variant_t(FieldIndex)).valueRecordcount = -1,我也没办法解决
    自己一条条数吧
    如果一定要用的话。。
      

  5.   

    或者先
    conenct.BeginTrans()
    getcount...select count(*) from yourtable
    getdataset..select * from ...
    connect.Commite();
      

  6.   

    DWORD dwCount = 0;
    dwCount = m_pRecordset->GetRecordCount(); if (dwCount == -1)
    {
    dwCount = 0;
    if (m_pRecordset->EndOfFile != VARIANT_TRUE) m_pRecordset->MoveFirst();

    while (m_pRecordset->EndOfFile != VARIANT_TRUE)
    {
    dwCount++;
    m_pRecordset->MoveNext();
    }
    if (dwCount > 0) m_pRecordset->MoveFirst();
    }

    return dwCount;
      

  7.   

    long val = (long)NULL;
    _variant_t vtFld;

    try
    {
    vtFld = m_pRecordset->Fields->GetItem(lpFieldName)->Value;
    if (vtFld.vt != VT_NULL && vtFld.vt != VT_EMPTY)
    val = vtFld.ulVal;
    ulValue = val;
    return TRUE;
    }
    catch (_com_error &e)
    {
    dump_com_error(e);
    return FALSE;
    }
      

  8.   

    顺便请大家帮我解决一下这个问题
    http://expert.csdn.net/Expert/topic/2979/2979812.xml?temp=.5434839
      

  9.   

    看看你的m_pRecrodset是不是在其他地方执行了SQL语句,从而改变了其原来的值