一个CRecordset类继承的类CStuSet,连接在数据库的一个表,怎样用SQL实现多表连接查询??
CStuSet m_set(&m_database);
CString strSQL;
strSQL=_T("select * form table1,table2 where table1.XX=table2.XX and
table1.XXX=X");
m_set.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL);
上面程序出错,我是初手,多谢指教!!

解决方案 »

  1.   

    AFX_DB_USE_DEFAULT_TYPE 是CRecordset::dynaset的吗?改改看
      

  2.   

    你可以看一下你在开始生成CStuSet类的时侯,是对应的几个表?
    如果是对应的一个表,而你的strSQL涉及多个表,则m_set.OpenAFX_DB_USE_DEFAULT_TYPE,strSQL)当然会出错了;
    你可一在开始生成CStuSet类时让它对应要连接多个表。
    也可以对每一个表对应一个记录集,把查询结果存于一个变量之中
    然后用此变量作为条件去对另一些表进行查询..................
    就这样了!!!1
      

  3.   

    这么用:
    CDatabase Form;
    if(!Form.Open(NULL,false,false,"ODBC;DSN=你的数据库名称",true))
    {
    ::AfxMessageBox("纪录集打开错误!");
    return;
    }
    CRecordset* pSelect=new CRecordset;
    CString mrsSql;
    pSelect->m_pDatabase=&Form;
    mrsSql=这里写多表查询的SQL语句
    if(!pSelect->Open(CRecordset::forwardOnly,mrsSql))
    {
    ::AfxMessageBox("记录打开错误!");
    return;
    }
    记住只能用forwardonly,因为这么关联起来的CRecordset是不支持回滚的(也没有回滚的必要)然后Crecordset使用方法会吧?