我开发一个数据库程序执行select * from 1没问题
但执行select fcjsl from 1 等语句就报(无效的描述器索引),部分代码如下:
     CString strSQL1;
    CDBVariant varValue1;
    strSQL1.Format("select fcjsl from 1");
  //  strSQL1.Format("select * from 1");
    m_database.Close();
    m_database.Open(NULL,FALSE,FALSE,"1",FALSE);
    CMyset m_recordset(&m_database);
   m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL1);

解决方案 »

  1.   

    strSQL1.Format("select * from 1");
        m_database.Close();
        m_database.Open(NULL,FALSE,FALSE,"1",FALSE);
    CMyset m_recordset(&m_database);
    // m_database.ExecuteSQL(strSQL1);
      m_recordset.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL1);
    补全代码
      

  2.   

    select fcjsl from 1改为select [fcjsl] from 1
      

  3.   

    我也碰到同样问题,你的是什么数据库?我的是DOS版的foxpro
      

  4.   

    梅花峰老兄我试了还是同样的错。我用的是DOS版的FOXPRO25
    VC用MFC ODBC
      

  5.   

    该为select 1.fcjsl from 1看看吧
    另外注意检查是不是fcjsl写错了。
    如果还是不行,你检查一下那条语句到底执行了吗?如果执行了,并且系统没有给你报如"语法错误"或"数据库引擎....“值类的错误,那么。没办法了。我想估计是那条语句没有执行
    给你一段代马看看:
    void CWinApiView::OnCsCustomize() 
    {
     //监测dao数据库对象的有效性,并在纪录集对象打开时关闭该记录集
       if(!m_pDatabase->IsOpen())
       return;
       if(!m_pRecordset)
       return;
       if(m_pRecordset->IsOpen())
       m_pRecordset->Close();
           CCusomizeFind dlg;
    if(dlg.DoModal()!=IDOK)
    return;
            //////////////////////////start///////////////////////////////////
    CString strSql,str,str1,str2;
       
    if(dlg.m_bSame==TRUE)//如果按"完全相等"来进行查询
          strSql.Format("select * from winapi where WinApi函数名='%s'",dlg.m_strFunName);
    else
    {
    str=dlg.m_strFunName+"*";
    str1="*"+dlg.m_strFunName+"*";
    AfxMessageBox(str);
           
    if(dlg.m_bAscend==TRUE)//安升序
    {
    strSql.Format("select * from winapi where WinApi函数名 like '%s' or WinApi函数名 like '%s'  order by WinApi函数名 ASC",str,str1);
    //AfxMessageBox(strSql);
    }
    else//降序
    strSql.Format("select * from winapi where WinApi函数名 like '%s' or WinApi函数名 like '%s'  order by WinApi函数名 DESC",str,str1); } /////////////////////////////end/////////////////////////////
        m_pRecordset->Open(dbOpenDynaset,strSql);
        ListRecord();      //显示纪录
    m_pRecordset->Close();
    }
      

  6.   

    天行健和梅花兄你们的办法我都试了不行,我想会不会不支持DOS版的FOXPRO25数据库,或者须用ADO方式访问,我用的是MFC ODBC。你们知道如何给对方分吗,我准备一人给你们10分!
      

  7.   

    我用SQL Server建表存在同样的问题,有知道请到http://expert.csdn.net/Expert/topic/1766/1766865.xml?temp=.2654993帮我解答,谢了