我的查询结果要从两张表中关联查询后得到,可是生成结果集m_Set只能对应一张表,我如何才能得到包含两张表信息的查询结果集呢?例如要实现如下要求:
CString SqlStr=“select table1.name,table1.id,table2.tele from table1,table2 where table1.id=table2.id”
m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,SqlStr);//这样这个结果集就不行了, table1和table2的结构不一样请求解决方法,谢谢!
CString SqlStr=“select table1.name,table1.id,table2.tele from table1,table2 where table1.id=table2.id”
m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,SqlStr);//这样这个结果集就不行了, table1和table2的结构不一样请求解决方法,谢谢!
或者你依次打开两个表,这么写:
CFirstSet firstform;
CSecondSet Secondform;
Firstform.open(......."firstformname");
Secondform.open(..."secondformname");
while(!firstform.IsEof()&&!Secondform.IsEof())
{
if(firstform.id==secondform.id)
......
firstform.movenext;
secondform.movenext;
缺点有点麻烦
无论是不是vc,所有编程语言处理这个不外乎两种方法:套用sql,或者用自己的函数。你还能想出新鲜的么?
= DEFAULT_FIELD_TYPE );
throw( CDBException, CMemoryException );void GetFieldValue( short nIndex, CDBVariant& varValue, short nFieldType =
DEFAULT_FIELD_TYPE );
throw( CDBException, CMemoryException );void GetFieldValue( LPCTSTR lpszName, CString& strValue );
throw( CDBException, CMemoryException );void GetFieldValue( short nIndex, CString& strValue );
throw( CDBException, CMemoryException );select table1.field1 as A1, table2.field1 as B1 ...CRecordset::GetFieldValue("A1",...)
CRecordset::GetFieldValue("B1",...)
这时的记录集是用第一种方式(建立CRecordSet的时候选择两个表)建立的,并且建立时选择了动态集方式。
但如果是建立时选择一个表,即使是选择了动态集方式也不会提示说“ODBC驱动程序不支持动态记录集”,为什么啊?
现只提问:
还有一个问题,我的程序运行查询时提示ODBC驱动程序不支持动态记录集,可能的原因有哪些?
还有
CString SqlStr;SqlStr = "select table1.namestr,table1.age,table1.num from table1,table2 where table1.namestr=table2.namestr";
m_TSet.Open(AFX_DB_USE_DEFAULT_TYPE,SqlStr);为什么提示“无效的描述器索引”?