ADOQuery1.SQL.ADD(' select UsersList.User_UID, UsersList.User_Name, count(StudysList.Study_key) as StudyNum from UsersList,StudysList '
+' where StudysList.User_UID = UsersList.User_UID '
+' group by UsersList.User_UID,UsersList.User_Name ' ) ;
想实现的功能是: 当 count(StudysList.Study_key) 也就是 StudyNum 的值 小于 20 时直接显示,大于20就显示20.小弟是新手,大略设想了下2个方向:
1、用SQl语句直接条件限制来实现 2、判断操作 DBgrid 显示的值
可是不知道具体该如何实现。。
where StudysList.User_UID = UsersList.User_UID
group by UsersList.User_UID,UsersList.User_Name
提示未指定的错误。。ADOQuery1.SQL.Add('select UsersList.User_UID, UsersList.User_Name,'
+' case when count(StudysList.Study_key)<20 then count(StudysList.Study_key) else 20 end as StudyNum '
+' from UsersList,StudysList where StudysList.User_UID = UsersList.User_UID group by UsersList.User_UID,UsersList.User_Name ');
ADOQuery1.Open;
case when count(StudysList.Study_key) <20 then count(StudysList.Study_key) else 20 end as StudyNum
替换成
iif(count(StudysList.Study_key)<20 ,count(StudysList.Study_key) ,20) as StudyNum
是 access 数据库,多谢月亮兄~
小弟冒昧的再问一句。。
假如 动态的设置 num = 20,那查询语句该怎么改? @num ?
num: Integer;
begin
num:=20;
ADOQuery1.SQL.ADD(' select UsersList.User_UID, UsersList.User_Name, iif(count(StudysList.Study_key) <'+inttostr(num)+' ,count(StudysList.Study_key) ,'+inttostr(num)+') as StudyNum from UsersList,StudysList '
+' where StudysList.User_UID = UsersList.User_UID '
+' group by UsersList.User_UID,UsersList.User_Name ' ) ;
end;