我要取sub_menu表中,字段menu_id的最大值,
用ADO写了以下代码,
SQL语句:select max(menu_id) from sub_menu,在ACCESS中可以正常使用,
但是在ADO中,提示如下错误“项目在所需的名称或序数中未被发现”
是为什么呢?
还是,ADO不支持这样的函数操作?m_Recordset.CreateInstance (__uuidof(Recordset));
lcs_strsql.Format("select max(menu_id) from sub_menu");m_OutPutCount = 1;
strcpy(m_sOutPutParams[0].Param_Name,"max(menu_id)");
m_sOutPutParams[0].Param_Length = 30;try{
        m_Recordset->Open(
                     (_bstr_t)lcs_strsql,
                     m_Connection.GetInterfacePtr(),
                     adOpenDynamic,
                     adLockOptimistic,
                     adCmdText);

//取查询结果
iRowId = 0;
while (!m_Recordset->adoEOF ) {
  iRowId++;
  for(iFieldId=0;iFieldId<m_OutPutCount;iFieldId++){
    pField = m_Recordset->Fields->Item [m_sOutPutParams[iFieldId].Param_Name];

    //取字段
    if(pField->Value.vt==VT_NULL)
      lcs_field ="";
    else {
      lcs_field = (char *)_bstr_t(pField->Value );
      lcs_field.TrimLeft();
               lcs_field.TrimRight();
    }
  }
  m_Recordset->MoveNext ();
        }
}catch(_com_error &Error_code){
_bstr_t bstrSource(Error_code.Source());
_bstr_t bstrDescrition(Error_code.Description ());
AfxMessageBox("数据处理失败!");
return;
}

解决方案 »

  1.   

    strcpy(m_sOutPutParams[0].Param_Name,"max(menu_id)");此句改为:
    strcpy(m_sOutPutParams[0].Param_Name,"menu_id");
      

  2.   

    不应该呀,这只是一条sql语句呀这样试一下
    lcs_strsql.Format("select max(menu_id) maxid from sub_menu");m_OutPutCount = 1;
    strcpy(m_sOutPutParams[0].Param_Name,"maxid");
      

  3.   

    都试了,
    改为:
    strcpy(m_sOutPutParams[0].Param_Name,"menu_id");
    还是同样错误若改为
    lcs_strsql.Format("select max(menu_id) maxid from sub_menu");m_OutPutCount = 1;
    strcpy(m_sOutPutParams[0].Param_Name,"maxid");则错误如下:
    {"语法错误 (操作符丢失) 在查询表达式 'max(menu_id) maxid' 中。" (1)}
      

  4.   

    select max(columnName) From tablecloumnName为字段名将Format()句改为:
    lcs_strsql.Format("select max('%s') from sub_menu",m_sOutPutParams[0].Param_Name);你的m_sOutPutParams[0].Param_Name 何解?
      

  5.   

    改为:
    m_OutPutCount = 1;
    strcpy(m_sOutPutParams[0].Param_Name,"menu_id");
    m_sOutPutParams[0].Param_Length = 30;lcs_strsql.Format("select max(%s) from sub_menu",m_sOutPutParams[0].Param_Name);还是一样的错,如下:
    项目在所需的名称或序数中未被发现。
      

  6.   

    m_sOutPutParams[0].Param_Name  这个是字段名吗试一下这样:
    lcs_strsql.Format("select max(menu_id) from sub_menu");