"The rowset is not bookmarkable"出錯

  "The rowset is not bookmarkable"出錯
用一個ADO+DATAGRID寫的程序,編譯正常.運行時出現"rowset is not bookmarkable",查了函數的調用和類型.都沒有問題.
搜索了下.原來是遊標的問題.

在ADOConn類的中GetRecordset方法中增加一句m_pRecordset->CursorLocation=adUseClient;

即:
// 執行查詢
_RecordsetPtr&  ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
    try
    {
        // 連接數據庫,如果Connection對象爲空,則重新連接數據庫
        if(m_pConnection==NULL)
            OnInitADOConn();
        // 創建記錄集對象
        m_pRecordset.CreateInstance(__uuidof(Recordset));
       //增加這一句.
        m_pRecordset->CursorLocation=adUseClient; //遊標的位置出現.不加這句會出現The rowset is not //bookmarkable運行錯誤

      // 取得表中的記錄
        m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
    }
    // 捕捉異常
    catch(_com_error e)
    {
        // 顯示錯誤信息
        AfxMessageBox(e.Description());
    }
    // 返回記錄集
    return m_pRecordset;
}
調用的方法是:

 

BOOL CDataGridDlg::OnInitDialog()
{
    CDialog::OnInitDialog();
//原代碼省略
   
    // TODO: Add extra initialization here
//************************************************************
ADOConn m_ado;
_bstr_t vSql="select * from users";
_RecordsetPtr m_pRecordset;


m_ado.OnInitADOConn();
m_pRecordset=m_ado.GetRecordSet(vSql);

m_datagrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);//m_datagrid爲DataGrid控件的變量.

//************************************************************

return TRUE;  // return TRUE  unless you set the focus to a control
}


本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/analysefirst/archive/2008/08/25/2826960.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章