_ConnectionPtr    m_Connection;    //连接对象
_RecordsetPtr    m_Recordset;    //记录集对象m_Connection.CreateInstance(__uuidof(Connection));
m_Recordset.CreateInstance(__uuidof(Recordset));m_Connection->Open("Provider=SQLOLEDB.1;Data Source=Acrobat;Initial Catalog=pubs;User ID=sa;PWD=;
                                        ","","",adConnectUnspecified);.......//已经做好了绑定的工作,但是执行下面的查询的话,总是提示错误。
//我是通过ADO提供的IADORecordBinding对象去绑定的。
//这个打开应该没有错吧! 
//而且做过异常判断,没有提示连接错误啊!
m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenStatic,
                                    adLockOptimistic, adCmdStoredProc)每次执行都提示一个对话框“参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。” 很是郁闷呐!
我有用MessageBox效检过一下语句,显示是个正确的SQL语句啊!上面是我写的程序中主要调用到的代码,各位拜托了,在线等。

解决方案 »

  1.   

    //把 
    m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenStatic,
                                        adLockOptimistic, adCmdStoredProc)
    //改成m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenStatic,
                                        adLockOptimistic, adCmdText)
      

  2.   

    m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenStatic, adLockOptimistic, adCmdStoredProc)
    ;
    ====================================================================
    改成:
    m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenDynamic,adLockOptimistic, adCmdText);打开方式不对。
      

  3.   

    //把 
    m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenStatic,
                                        adLockOptimistic, adCmdStoredProc)
    //改成m_Recordset->Open( "SELECT * FROM Employee ORDER BY lname", (_variant_t)m_Connection, adOpenStatic,
                                        adLockOptimistic, adCmdText
      

  4.   

    改过的,不管用啦!不是那里的问题啊!我改用Connection对象查询的话就没有什么问题啦!
      

  5.   


    // 执行查询
    _RecordsetPtr& CMyDB::GetRecordSet(CString strSql)
    {
    try
    {
    _variant_t RecordsAffected; if( m_pRecordset->GetState() == adStateOpen)
    {
    m_pRecordset->Close();
    } m_pRecordset->Open((LPCTSTR)strSql,_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);
    }
    catch(_com_error e)
    {
    CString errormessage;
    errormessage.Format("SQL执行失败!\r\n错误信息:%s SQL:%s",(char*)(e.Description()),(LPCTSTR)strSql);
    m_strError = (LPCTSTR)e.Description();
    CLog::Log(errormessage);
    }
    return m_pRecordset;
    }