我用CDaoRecordset+Access97编写的程序,
运行到下面这个程序的myRecord.Open(AFX_DAO_USE_DEFAULT_TYPE,sql, NULL);这句的时候
保错:“GetRows失败。所请求的列不是该记录集的一部分”
我根本没有调用GetRows这个函数啊
为什么出这个错误啊??
请多多帮忙:)/*-----这个函数是打开由strTable所指定的表------------*/
CMyRecordset* CMyRecordset::OpenRecordset(CString strTable) 
{
//获取当前运行程序的路径,存在sPath中
CString sPath,strFile;
GetModuleFileName(NULL,sPath.GetBufferSetLength (MAX_PATH+1),MAX_PATH);
sPath.ReleaseBuffer ();
    int nPos;
nPos=sPath.ReverseFind ('\\');
sPath=sPath.Left (nPos);
strFile = sPath + "\\Database\\MoneyManager.mdb"; myDB.Open(strFile);
CString sql="";
sql.Format("SELECT Money.* FROM [%s];",strTable);
myRecord.Open(AFX_DAO_USE_DEFAULT_TYPE,sql, NULL);//+++++++++这里出错 return &myRecord;
}

解决方案 »

  1.   

    GetRows是Open自动调用的呀,进行myRecord的赋值啊~~~~~~~~~~~~~~~~~~~~~
      

  2.   

    sql.Format("SELECT Money.* FROM [%s];",strTable);
    的错误吧,,,检查SQL语句到底是什么东西?是否出错了?
      

  3.   

    而且 sql 中, 最后不需要分号, 如果你要返回表中的所有记录, 则是:
    sql.Format("SELECT * FROM [%s]", strTable);
      

  4.   

    这个是用access生成的
    我第一次用的直接是*
    然后错了
    我就直接复制access 生成的
      

  5.   

    最后一个参数用 dbReadOnly 试试看.
      

  6.   

    问题解决了
    解决办法是:
    不派生自己的CDaoRecordset类了
    直接用
    不知道为什么。
    还是谢谢你们
    揭帖