用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;
}
7 个解决方案
#1
strcpy(m_sOutPutParams[0].Param_Name,"max(menu_id)");
此句改为:
strcpy(m_sOutPutParams[0].Param_Name,"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");
这样试一下
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)}
改为:
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 table
cloumnName为字段名
将Format()句改为:
lcs_strsql.Format("select max('%s') from sub_menu",m_sOutPutParams[0].Param_Name);
你的m_sOutPutParams[0].Param_Name 何解?
cloumnName为字段名
将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);
还是一样的错,如下:
项目在所需的名称或序数中未被发现。
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
顶,一下
#7
m_sOutPutParams[0].Param_Name 这个是字段名吗
试一下这样:
lcs_strsql.Format("select max(menu_id) from sub_menu");
试一下这样:
lcs_strsql.Format("select max(menu_id) from sub_menu");
#1
strcpy(m_sOutPutParams[0].Param_Name,"max(menu_id)");
此句改为:
strcpy(m_sOutPutParams[0].Param_Name,"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");
这样试一下
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)}
改为:
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 table
cloumnName为字段名
将Format()句改为:
lcs_strsql.Format("select max('%s') from sub_menu",m_sOutPutParams[0].Param_Name);
你的m_sOutPutParams[0].Param_Name 何解?
cloumnName为字段名
将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);
还是一样的错,如下:
项目在所需的名称或序数中未被发现。
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
顶,一下
#7
m_sOutPutParams[0].Param_Name 这个是字段名吗
试一下这样:
lcs_strsql.Format("select max(menu_id) from sub_menu");
试一下这样:
lcs_strsql.Format("select max(menu_id) from sub_menu");