求助:select中加入“order by ID”检索条件后,open就报错

gordonlj 2018-03-17 06:38:11
求助:
当select中加入“order by ID asc”检索条件后,open就报错,初学者,各位帮忙看看。
想法是:根据num检索后,根据ID的大小顺序检索数据库,加进order by ID asc后,open函数就报错。
	
_ConnectionPtr m_pCon; // 连接对象
_RecordsetPtr m_pRs; // 记录集对象

Select_AxleNum.Format("select distinct(num) from CarType where w1>=%d and w1<=%d",MinV,MaxV);
//
i=0;
while(***)
{
i++;
MaxV=****;
MinV=(int)(***);
Str_Add.Format(" and w%d>=%d and w%d<=%d",i+1,MinV,i+1,MaxV);
Select_AxleNum +=Str_Add;
}
//
i++;
MaxV=(int)(***);
if(MaxV > 0)
{
Str_Add.Format(" and w%d<=%d",i+1,MaxV);
Select_AxleNum +=Str_Add;
}

Str_Add.Format(" order by ID)"); //加入后open就报错啦
Select_AxleNum +=Str_Add;

// 开始检索轴数的唯一性
bsSql = Select_AxleNum.AllocSysString();
m_pRs->Open((CComVariant)bsSql,m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
// 分析查询结果
while(VARIANT_FALSE == m_pRs->EndOfFile)
{
AxleNum++;
vFieldValue = m_pRs->GetCollect(_variant_t((long)0));
Train_Num=atoi((char*)_bstr_t(vFieldValue));
m_pRs->MoveNext();
}
// 关闭记录集
m_pRs->Close();
...全文
373 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 2018-03-19
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
) 这个括号去掉再试
修正:
--错误
SELECT DISTINCT (sv.number) FROM MASTER.dbo.spt_values AS sv
ORDER BY sv.name
/*
消息 145,级别 15,状态 1,第 2 行
如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中。
*/

--正确
SELECT DISTINCT (sv.number) FROM MASTER.dbo.spt_values AS sv
ORDER BY sv.number
Mu_small 2018-03-19
  • 打赏
  • 举报
回复
引用 楼主 gordonlj 的回复:
求助: 当select中加入“order by ID asc”检索条件后,open就报错,初学者,各位帮忙看看。 想法是:根据num检索后,根据ID的大小顺序检索数据库,加进order by ID asc后,open函数就报错。
	
_ConnectionPtr m_pCon;							// 连接对象
_RecordsetPtr m_pRs;							// 记录集对象

Select_AxleNum.Format("select distinct(num) from CarType where w1>=%d and w1<=%d",MinV,MaxV);
	//
	i=0;
	while(***)
	{
		i++;		
		MaxV=****;
		MinV=(int)(***);
		Str_Add.Format(" and w%d>=%d and w%d<=%d",i+1,MinV,i+1,MaxV);
		Select_AxleNum +=Str_Add;
	}
	//
	i++;
	MaxV=(int)(***);
	if(MaxV > 0)
	{
		Str_Add.Format(" and w%d<=%d",i+1,MaxV);
		Select_AxleNum +=Str_Add;
	}

	Str_Add.Format(" order by ID)");  //加入后open就报错啦
	Select_AxleNum +=Str_Add;

	// 开始检索轴数的唯一性
	bsSql = Select_AxleNum.AllocSysString();
	m_pRs->Open((CComVariant)bsSql,m_pCon.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
	// 分析查询结果
	while(VARIANT_FALSE == m_pRs->EndOfFile)
	{
		AxleNum++;
		vFieldValue = m_pRs->GetCollect(_variant_t((long)0));
		Train_Num=atoi((char*)_bstr_t(vFieldValue));
		m_pRs->MoveNext();
	}
	// 关闭记录集
		m_pRs->Close();
35行那里少了一个)吧
zbdzjx 2018-03-19
  • 打赏
  • 举报
回复
select distinct(num)……order by ID 肯定会报错啦 要么就 select num…… group by num order by max(ID)
吉普赛的歌 2018-03-17
  • 打赏
  • 举报
回复

) 这个括号去掉再试

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧