extern CString strText;
m_pRecordset->Open("SELECT * FROM UserTbl Where Name like '%" + strText + "%'",                // 查询DemoTable表中所有字段
m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
为啥出错呢。

解决方案 »

  1.   

    1)贴出错信息。
    2)把其中的SQL语句放到“查询管理器”运行看有没有错。
    3)注意 ' " 号的写法。
      

  2.   


    m_pRecordset->Open("SELECT * FROM UserTbl Where Name like '\%"+ strText +"\%'",                // 查询DemoTable表中所有字段
    m_pConnection.GetInterfacePtr(),  // 获取库接库的IDispatch指针
    adOpenDynamic,
    adLockOptimistic,
    adCmdText);还是一样出错。
    提示如下:
    2 IntelliSense: 没有与这些操作数匹配的 "+" 运算符
      

  3.   


    "SELECT * FROM UserTbl Where Name like '12345'"这样写的话,没有错误。
      

  4.   

    不对...字符串直接+?!
    要先搞成CString才能+
      

  5.   

    先用sprintf格式化字符串,再放进open里吧。
      

  6.   

      m_pRecordset->Open(_T("SELECT * FROM UserTbl Where Name like '\%")+ strText +"\%'",......)  试试看。
      

  7.   

    _RecordsetPtr的Open方法,第一个参数是_variant_t,而_variant_t没有这样的构造方法和强制转换的类型。
    可以查看http://msdn.microsoft.com/en-us/library/k74e1xsh.aspx
    如果要这样格式化,可以定义一个临时的CString,再格式化字符串。
    CString cstr;
    cstr.Format("SELECT * FROM UserTbl Where Name like '\%%s\%'", strText);
    或者用sprintf也可以。
      

  8.   

    CString strSQL;
    _RecordsetPtr m_pRecordset=NULL;

    strSQL.Format("SELECT * from XXTable WHERE XXID = '%s'",strXXID);m_pRecordset->Open(_variant_t(strSQL), m_pConnect.GetInterfacePtr(),  adOpenForwardOnly,adLockReadOnly, adCmdText);
    VC6+ADO一直可以以上这样写
      

  9.   

    谢谢各位。新手,太急于求成。工作要完成不得已。m_pRecordset->Open(_T("SELECT * FROM UserTbl Where Name like '%")+ strText +"%'",
    这样OK.