atl oledb 数据库用的是ACCESS
因为我要得到行集的总个数,所以加了 pPropSet->AddProperty(DBPROP_BOOKMARKSKIPPED,true);
这个属性(不用的话得到的总个数为1)
但是加了这个属性之后。就不能插入数据了(可是删除)!提示DB_E_ERRORSOCCURRED
。(不用这个属性的话就正常)
为什么!!!
高手!!!帮忙解决一下!!!我愿把我所用的分送出~!!!!!!

解决方案 »

  1.   

    我也在作類似的 因爲沒時間在細節上耗暫時來蠻的 從頭到尾MoveNext並且計數
      

  2.   

    我的数据量比较大!!
    得到个数用
    ULONG mRecCount;
    HRESULT hr = GetApproximatePosition(NULL,NULL ,&mRecCount);
    就可以了!不过要用DBPROP_BOOKMARKSKIPPED  这个属性!
    现在的问题是我加了这个属性后不能对 数据库进行正常的操作了!!高手们都过来撒!!!!!!!
      

  3.   

    不知道我的对不对
    我的好像不是用这个属性DBPROP_BOOKMARKSKIPPED 而用
    propset.AddProperty(DBPROP_IRowsetScroll, true);好像也行了。
    另外我是用OLE DB模板不是直接SDK MSDN上说是要用这个
      

  4.   

    不行!我用的是OLE DB模板pPropSet->AddProperty(DBPROP_CANFETCHBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
    pPropSet->AddProperty(DBPROP_CANSCROLLBACKWARDS, true, DBPROPOPTIONS_OPTIONAL);
    pPropSet->AddProperty(DBPROP_IRowsetChange, true, DBPROPOPTIONS_OPTIONAL);
    pPropSet->AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE);
    pPropSet->AddProperty(DBPROP_BOOKMARKS,true);
    pPropSet->AddProperty(DBPROP_BOOKMARKSKIPPED,true);
    pPropSet->AddProperty(DBPROP_IRowsetScroll,true);
    这是我选择的属性!
    按你说的!我得到的记录个数是!