DBGrid显示问题
用ADOQuery..DataSource...DBGrid方式,查询一批号码的定制情况,但DBGrid只在第一行依次显示查询结果,而不是按行一行一行输出所有号码的定制情况,什么原因,如何解决?请大虾指教。
[解决办法]
那就 用 union all啊~~~
ADOQuery16.Close;
ADOQuery16.SQL.Clear;
for i:=0 to UserList.Count-1 do
begin
StrSQL:= 'Select order_mobile,order_state,order_time From sms_user_order where order_mobile= ' ' '+UserList.Strings[i]+ ' ' ' union all ';
ADOQuery16.SQL.Add(StrSQL);
end
ADOQuery16.SQL.text :=copy(……)//去除最后一个 union all 就可以了
ADOQuery16.Open;
Application.ProcessMessages;
[解决办法]
//函数功能,将stringlist中的字符组合成一个字符串.作为where KeyField in (%s)的条件
function JoinStringListToString(sl:TStringList; strSeparator:string):string;
var
strTemp:string;
i:Integer;
begin//
strTemp:= ' ';
if sl.Count <> 0 then
begin
for i:= 0 to sl.Count- 1 do
strTemp:= strTemp+ sl[i]+ strSeparator;
strTemp:= Copy(strTemp,1,Length(strTemp)-Length(strSeparator));
end;
Result:= strTemp;
end;
这样查出来的就是一个数据集合了.