这个函数怎么写好了:
   输入参数1: tabname  表名,
   输入参数2: columnname  字段名,为int型
  
    输出参数: maxvalue,   该字段最大值。如果没有记录就为1。
  
    请问该函数如何比较简单?

解决方案 »

  1.   

    select max(columnname) maxvalue from tabname
      

  2.   

    {
    rs->Open("select maxvalue from tabname order by columnname desc", _variant_t( (IDispatch *)conn,true) , adOpenStatic , adLockOptimistic , adCmdText); if( rs->adoEOF)
       return 1;
    else
       return rs->GetCollect("maxvalue");
    }
      

  3.   

    在打开记录集之前最好判断一下rs的状态,如果正打开一个表,最好先
    rs->Close();
      

  4.   

    不好意思,上面代码写错了,把所有的maxvalue改成columnname变量
      

  5.   

    CRecordSet pSet;pSet->Open(AFX_DB_USE_DEFAULT_TYPE,"select max(columnname) max_value maxvalue from tabname");CDBVariant varValue;pSet->GetFieldValue("max_value", %varValue);return varValue.m_lVal;
      

  6.   

    to wanglei888(阿笨猫):
     你的方法我用了。而且我在前面把 pSet改写为我自己的pSet(&db);
     
      你的这里多了个 maxvalue,我也去掉了。该为:
      pSet->Open(AFX_DB_USE_DEFAULT_TYPE,"select max(columnname) max_value  from tabname");
      编译当然没错,可运行的时候说:
       在调用SQLFetchScroll/SQLExtendFetch之前没有绑定数据列!我想是没有绑定好列,不知道怎么方便绑定!
       
     
      

  7.   

    这样改试试:
    SQL语句使用:
    "select max(columnname) from tabname" // 去掉max_value然后
    pSet->GetFieldValue("max_value", %varValue);修改为:
    pSet->GetFieldValue(0, %varValue);GoodLuck!
      

  8.   


      呵呵:终于可以了,是这样的:
       pSet->Open(AFX_DB_USE_DEFAULT_TYPE,"select max(columnname) max_value maxvalue from tabname");
     上面这句话改为
       pSet->Open(CRecordset::forwardOnly,"select max(columnname) max_value maxvalue from tabname"); 就可以了。呵呵!
     
     谢谢各位,准备接分!!